238. Product of Array Except Self

Posted skillking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了238. Product of Array Except Self相关的知识,希望对你有一定的参考价值。

一、题目

  1、审题

  技术分享图片

  2、分析

    给出一个整形数组,用另一个数组存储所给数组的除去当前下标元素外的所有元素的乘积。尝试用 O(n) 时间复杂度,常数额外空间。

 

二、解答

  1、思路

    方法一、

      ① 新建数组 result,使用循环,为 result 赋值, result[i] = nums[0] * nums[1] * ... * nums[i-1] 。

      ② 采用新的循环,从后向前遍历nums,用初值为 1 的变量 right 记录从nums中遍历的元素的乘积。

      ③ 将 right 每次更新的值乘入 result [i];

    public int[] productExceptSelf(int[] nums) {
        int len = nums.length;
        int[] result = new int[len];
        result[0] = 1;
        for (int i = 1; i < len; i++) // result[i] = nums[0] * nums[1] * ... * nums[i-1] 
            result[i] = result[i-1] * nums[i-1];
        
        int right = 1;
        for (int i = len - 1; i >= 0; i--) {
            result[i] *= right; 
            right *= nums[i];
        }
        
        return result;
    }

 

以上是关于238. Product of Array Except Self的主要内容,如果未能解决你的问题,请参考以下文章

238. Product of Array Except Self

LeetCode OJ 238. Product of Array Except Self 解题报告

238. Product of Array Except Self

238. Product of Array Except Self

238. Product of Array Except Self

238. Product of Array Except Self