238. Product of Array Except Self

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


你可能感兴趣的:(238. Product of Array Except Self)