题目链接:
题面:
238. Product of Array Except Self
Medium
2317197FavoriteShare
Given an array nums
of n integers where n > 1, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Example:
Input:[1,2,3,4]
Output:[24,12,8,6]
Note: Please solve it without division and in O(n).
Follow up:
Could you solve it with constant space complexity? (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) {
int sz=nums.size();
vector <int> v1(sz),v2(sz),ans(sz);
v1[0]=1;
v2[sz-1]=1;
for(int i=1;i<sz;i++){
v1[i]=v1[i-1]*nums[i-1];
v2[sz-i-1]=v2[sz-i]*nums[sz-i];
}
for(int i=0;i<sz;i++){
ans[i]=v1[i]*v2[i];
}
return ans;
}
};