https://leetcode-cn.com/problems/product-of-array-except-self/
这种需要左边、右边连续区间的计算结果的,可以先从左到右和从右到左计算一遍,同时存起来。这样不用每个都计算左右区间的结果。
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int n=nums.size();
vector<int> left(n);
vector<int> right(n);
int mul=1;
for(int i=0;i<n;i++){
left[i]=mul;
mul=mul*nums[i];
}
mul=1;
for(int i=n-1;i>=0;i--){
right[i]=mul;
mul=mul*nums[i];
}
vector<int> ans;
for(int i=0;i<n;i++)
ans.push_back(left[i]*right[i]);
return ans;
}
};