
使用了除法class Solution { public: vectorint productExceptSelf(vectorint nums) { int mul1; int zeronum0; int tmp0; vectorint ans; for(int i0;inums.size();i) { if(nums[i]!0) { mul*nums[i]; } else{ zeronum; if(zeronum1) { continue; } else{ mul0; break; } } } if(zeronum1) { for(int i0;inums.size();i) { ans.push_back(0); } return ans; } for(int i0;inums.size();i) { if(zeronum1nums[i]!0) { ans.push_back(0); } if(zeronum1nums[i]0) { ans.push_back(mul); } if(zeronum0) { ans.push_back(mul/nums[i]); } } return ans; } };不能使用除法class Solution { public: vectorint productExceptSelf(vectorint nums) { // int lennums.size(); // vectorint ans(len,1); // int tmp1; // for(int i1;ilen;i){ // ans[i]ans[i-1]*nums[i-1]; // }//前面乘积 // for(int ilen-2;i0;--i){ // tmp*nums[i1]; // ans[i]*tmp;//后面乘积 // } // return ans; // } int lennums.size(); vectorint ans(len,1); int tmp1; for(int ilen-2;i0;--i) { ans[i]ans[i1]*nums[i1]; }//右侧 for(int i0;ilen;i){ ans[i] * tmp; // 先乘左侧累积乘积 tmp * nums[i]; // 更新左侧乘积包括当前数 } return ans; } };