Product of Array Except Self

    xiaoxiao2021-08-24  100

    Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

    Solve it without division and in O(n).

    For example, given [1,2,3,4], return [24,12,8,6].

    这道题还看了挺久,发现根本没那么复杂。虽然没有找到最优解,但是相处了一个比较容易的解法。构建两个数组, 分别存储从左从右累计的乘积,(不包括自己)。例如上面的例子: left = [1, 1, 2, 6] right = [ 24 ,12, 4,1]。然后在相同下表处乘积合并就好了。

    代码:

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

    转载请注明原文地址: https://ju.6miu.com/read-677041.html

    最新回复(0)