leetcode Product of Array Except Self 生成除自己之外的数组

来源:互联网 发布:优化9蒙古入侵 编辑:程序博客网 时间:2024/06/05 06:13

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外元素的乘积。
时间复杂度O(n),空间复杂度O(1)。

class Solution {public:    vector<int> productExceptSelf(vector<int>& nums) {        int temp = 1, zeroCount = 0;        for (auto ele : nums) {            if (ele) temp *= ele;            else zeroCount++;        }        if(zeroCount == 0)             for (int i = 0; i < nums.size(); ++i)                nums[i] = temp / nums[i];        else            for (int i = 0; i < nums.size(); ++i) {                            if (nums[i]) nums[i] = 0;                else if (zeroCount == 1) nums[i] = temp;                else nums[i] = 0;            }        return nums;    }};
阅读全文
0 0
原创粉丝点击