LeetCode 热题100-68-除自身以外的数组的乘积

LeetCode 热题100-68-除自身以外的数组的乘积,第1张

核心思想:无,就是个很巧妙地推导
思路:
由于题目说,输出结果数组ans不算额外空间,所以可以利用这个ans数组来存储其他信息。
首先,令ans[0]=1,从左向右开始遍历数组nums,然后,每个位置i上的数值为前一位置ans[i-1]和nums[i-1]的乘积,本次遍历结束之后,得到每个位置的左边的元素乘积;
之后,借助元素r=1,开始从右向左开始遍历,每次更新r值,r=r*nums[i],这样便能在每次遍历中存储每一位置的当前的右边元素乘积,这就是nums[0] * … * nums[i-1] * …num[i+1]…,其中ans数组存储左边子元素乘积,r存储右边子元素乘积。

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int[] answer = new int[nums.length];
        answer[0] = 1;
        for(int i = 1; i < nums.length; i++){
            answer[i] = answer[i - 1] * nums[i - 1];
        }
        int r = 1;
        for(int i = nums.length - 1; i >= 0; i--){
            answer[i] = answer[i] * r;
            r = r * nums[i];
        }
        return answer;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/797811.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存