238. 除自身以外数组的乘积

2024/4/18 算法

题目链接:238. 除自身以外数组的乘积 (opens new window)

思路是两次遍历,顺序遍历用一个数组记录索引i之前的乘积,这个数组也是我们最终要返回的结果,然后逆序遍历,用一个temp变量记录后边的乘积,与之前的数组相乘。这题还有一个知识点,把数组全部初始化为0,用Arrays.fill()。代码如下:

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int[] res = new int[nums.length];//res[i]即是我们所求的nums 中除 nums[i] 之外其余各元素的乘积 
        Arrays.fill(res, 1);//数组所有元素初始化为1
        for (int i = 1; i < nums.length; i++) {
            res[i] = res[i - 1] * nums[i - 1];//先乘了i以前的乘积
        }
        int temp = 1;
        for (int j = nums.length - 2; j >= 0; j--) {
            temp = temp * nums[j + 1];//j的后边几项乘积
            res[j] = res[j] * temp;
        }
        return res;
    }
}