Thursday, August 13, 2015

Leetcode: Product of Array Except Self (60ms) analysis and solution

Problem:
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 ofnums 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.)
Hide Tags
 Array
Show Similar Problems


















Analysis:

Using two round processing: forward and backward. See figure for detail:



//////////////////////////////////////////
//code 60ms
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        vector<int> tmp(nums.size(), 1);
        int n=nums.size();
        //forward
        for(int i=0;i<n-1;i++){
            tmp[i+1]=tmp[i]*nums[i];
        }
        //backward
        int m=1;
        for (int j=n-1;j>-1;j--){
            tmp[j]=m*tmp[j];
            m=m*nums[j];
        }
        return tmp;
    }
};



No comments:

Post a Comment