class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int mul = 1;
int cnt = 0; //记录“0”的个数
for(int i = 0;i < nums.size();i ++){
if(nums[i] == 0) cnt ++;
else mul *= nums[i]; //记录下所有非0数的乘积
}
vector<int> res(nums.size());
if(cnt >= 2) return res; //所有的answer[i]必定都是0
else if(cnt == 1){
for(int i = 0;i < nums.size();i ++){
if(nums[i] == 0){ //仅此时的answer[i]是非0的
res[i] = mul;
break;
}
}
}
else if(cnt == 0){ //所有answer[i]都是非0,可直接除
for(int i = 0;i < nums.size();i ++)
res[i] = mul / nums[i];
}
return res;
}
};
LeetCode 238. 除自身以外数组的乘积
最新推荐文章于 2024-05-02 10:05:47 发布