Given an array of n integers where n > 1, nums
and return an array output
such that's equal to output[i]
th E 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 solve it with constant space complexity? (note:the output array does not count as extra space for the purpose of space complexity analysis.)
=================
The array, in addition to its own elements, is a product of other elements that form a new array.
--------------
Ideas:
Set two integer variables, start=end=1, new return array vector<int> re (Nums.size (), 1);
Multiplies & assigns the current element in the re from the end of the array, respectively
As you traverse one side, each element in the re is exactly what is required.
=======
Code
classSolution { Public: Vector<int> productexceptself (vector<int>&nums) { if(Nums.empty ())returnvector<int>(); Vector<int> Re (nums.size (),1); intStart =1; intE =1; for(inti =0;i< (int) nums.size (); i++) {Re[i]*=start; Start*=Nums[i]; Re[nums.size ()-i-1] *=e; E*= nums[nums.size ()-i-1]; } for(Auto I:re) cout<<i<<" "; cout<<Endl; returnre; }};
238. Product of Array Except self