题目链接:https://leetcode-cn.com/problems/product-of-array-except-self/
题目如下:
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
//原数组: [1 2 3 4]
//左部分的乘积: 1 1 1*2 1*2*3
//右部分的乘积: 2*3*4 3*4 4 1
//结果: 1*2*3*4 1*3*4 1*2*4 1*2*3*1
//结论:当前位置的结果为它的 左部分的乘积 * 右部分的乘积
int n=nums.size();
int left=1,right=1;//left:从左边开始累乘,right:从右边开始累乘
vector<int> result(n,1);
for(int i=0;i<n;++i){
result[i]=result[i]*left;
left=left*nums[i];//左累乘
result[n-1-i]=result[n-1-i]*right;
right=right*nums[n-1-i];//右累乘
}
return result;
}
};