个人技术分享

238. 除自身以外数组的乘积 - 力扣(LeetCode)

class Solution {
    /**
    2024.6.17
    思路还是比较巧妙,遍历元素2遍,从左往右,算每个元素左边的乘积,不断累乘,直接赋值;
    再从右往左,右边元素乘积再乘以上一遍左边元素乘积,就得到结果了
     */
    public int[] productExceptSelf(int[] nums) {
        int[] res=new int[nums.length];
        int leftN=1;
        int rightN=1;

        for(int i=0;i<nums.length;i++){
            res[i]=leftN;
            // 从左往右,第一遍一直累乘
            leftN*=nums[i];
        }

        for(int i=nums.length-1;i>=0;i--){
            res[i]=res[i]*rightN;
            rightN*=nums[i];
        }

        return res;
    }
}