自学内容网 自学内容网

力扣HOT100 - 238. 除自身以外数组的乘积

解题思路:

当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int len = nums.length;
        if (len == 0)
            return new int[0];
        int[] ans = new int[len];
        ans[0] = 1;
        int tmp = 1;
        //左半部分乘积
        for (int i = 1; i < len; i++) {
            ans[i] = ans[i - 1] * nums[i - 1];
        }
        //右半部分乘积,巧妙地使用tmp
        for (int i = len - 2; i >= 0; i--) {
            tmp *= nums[i + 1];
            ans[i] *= tmp;
        }
        return ans;
    }
}


原文地址:https://blog.csdn.net/qq_61504864/article/details/137609831

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!