[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;
}
}