Leetcode

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;
}

总结

逆向思维, 考虑特殊情况。

上一篇下一篇

猜你喜欢

热点阅读