Leetcode.238.Product of Array Ex
2019-12-05 本文已影响0人
Jimmy木
题目
给定一个数组,输出一个数组,数组元素是除自己以外所有元素的乘积。
Input: [1,2,3,4]
Output: [24,12,8,6]
Inout: [0,1]
Output: [1, 0]
思路
需要计算除自己以外的乘积, 可以先将所有元素的乘积计算出来, 然后除以自身。
需要考虑特殊情况0,如果有一个0,特殊记录该乘积即可。如果有1个以上0,所有结果都是0.
vector<int> productExceptSelf(vector<int>& nums) {
int product = 1;
int zeroCount = 0;
int zeroProduct = 1;
for (int x : nums) {
product *= x;
if (x == 0) {
zeroCount++;
continue;
}
zeroProduct *= x;
}
if (zeroCount > 1) {
return vector<int>(nums.size(),0);
}
vector<int> res;
for (int x : nums) {
if (x == 0) {
res.push_back(zeroProduct);
} else {
res.push_back(product / x);
}
}
return res;
}
总结
逆向思维, 考虑特殊情况。