欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Leetcode] 238. 除自身以外数组的乘积 java

程序员文章站 2022-07-14 17:57:57
...

 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

输入: [1,2,3,4]
输出: [24,12,8,6]

说明: 不要使用除法,且在 O(n) 时间复杂度内完成此题。

进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)

思路:每一个数除了它本身所有数的乘积都是他左边数的乘积 乘以 右边数的乘积。

例输入[1,2,3,4] , 左边数乘积n1=[1,1,2,6] ,右边数乘积n2=[1,4,12,24] ,返回结果等于[1*24 , 1*12 , 2*4 , 6*1]。

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n=nums.length;
        int n1[]=new int[n];
        int n2[]=new int[n];
        n1[0]=1;
        n2[0]=1;
        int[] result=new int[n];
        for(int i=1;i<n;i++){
            n1[i]=nums[i-1]*n1[i-1];
            n2[i]=nums[n-i]*n2[i-1];
        }
        for(int i=0;i<n;i++){
            result[i]=n1[i]*n2[n-i-1];
        }
        return result;
    }
}