238. Product of Array Except Self

来源:互联网 发布:淘宝抢购 编辑:程序博客网 时间:2024/06/09 16:34

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].

Follow up:

Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)【思路】最终乘积结果等于以这个元素为分界点,左边连乘积与右边连乘积的 乘积。

class Solution {public:    vector<int> productExceptSelf(vector<int>& nums) {        vector<int> result;        if(nums.size()==0) return result;        if(nums.size()==1) return result;        vector<int> p1(nums.size(),1);        vector<int> p2(nums.size(),1);        int tmp = 1;        for(int i = 1; i < nums.size(); i++){                 p1[i] = p1[i-1] * nums[i-1];        }        for(int j = nums.size()- 2 ; j >=0; j--){           p2[j] = p2[j+1] * nums[j+1];           p1[j] = p2[j] * p1[j];          }        return p1;    }};


0 0
原创粉丝点击