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.)
=================
数组除自身元素外,其他元素间的乘积,形成新的数组.
--------------
思路:
设置两个整数变量,start=end=1,新的返回数组vector<int> re(nums.size(),1);
分别从数组首尾依次 对 re中当前元素相乘&赋值
遍历一边后,正好re中每个元素就是所要求的.
=======
代码
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { if(nums.empty()) return vector<int>(); vector<int> re(nums.size(),1); int start = 1; int e = 1; for(int i =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; return re; } };