题目:
Given an array of n integers where n > 1, nums
, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Solve it without division and in O(n).
For example, given [1,2,3,4]
, return [24,12,8,6]
.
分析:
既然是除了自己以外的数的积,那么把所有的数相乘即可。
但是考虑到数组中可能有0的存在,那么需要把没有0,有1一个0,有多个0的情况分别写出。同时将所有不为0的数相乘即可。
代码:
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int total=1,numOfZero=0,now;
for(int i=0;i<nums.size();++i){
if(nums[i]==0)numOfZero++;
else total*=nums[i];
}
vector<int> res;
if(numOfZero){
if(numOfZero==1){
for(int i=0;i<nums.size();++i){
if(nums[i]!=0)res.push_back(0);
else res.push_back(total);
}
}
else {
for(int i=0;i<nums.size();++i){
res.push_back(0);
}
}
}
else {
for(int i=0;i<nums.size();++i){
res.push_back(total/nums[i]);
}
}
return res;
}
};