原题链接
nums 1 2 3 4 p 1 1 2 6 这里不用算出来最后一位,没有用 s 记录后缀和的乘积
其中 P是前缀乘积,p[i] = p[i - 1] * nums[i - 1] 从1开始算
反过来求的时候,从两个数组对应 i 就看出来了
求每一个位置的数,就是这个数的前缀乘积 × 这个数的后缀乘积就好了
代码如下:class Solution {
public:
vector productExceptSelf(vector& nums) {
int n = nums.size();
vector p(n, 1);
for(int i = 1; i < n; i ++) p[i] = p[i - 1] * nums[i - 1];
for(int i = n - 1, s = 1; i >= 0; i --){
p[i] *= s;
s *= nums[i];
}
return p;
}
};



