Leetcode238. 除自身以外数组的乘积(HOT100)

链接

代码:
 

class Solution {
public:
    vector productExceptSelf(vector& nums) {
        int n = nums.size();
        vector p(n,1);
        for(int i = 1;i=0;--i){
            p[i]*=s;
            s*=nums[i];
        }
        return p;
    }
};

题解:

Leetcode238. 除自身以外数组的乘积(HOT100)_第1张图片

从左往右,先求解一下前缀积,不包含自身。此时,第一个元素已经被初始化为1,所以i 从1开始而不是0。

从右往左,用一个变量s记录后缀积,前缀积与后缀积相乘放到 p [ i ] 处。

从右往左也可以将s直接更新为nums[n-1]的值,从而for循环从n-2开始:
Leetcode238. 除自身以外数组的乘积(HOT100)_第2张图片

你可能感兴趣的:(Leetcode238. 除自身以外数组的乘积(HOT100))