Leetcode238. 除自身以外数组的乘积(java实现)

avatar
作者
筋斗云
阅读量:0

今天分享的题目是letcode238. 除自身以外数组的乘积
先来看题目描述:
在这里插入图片描述
本道题我最先想到的是先乘积所有的元素,然后除以所有元素,但是本题无法使用除法。
本题的解题思路是使用前缀积。
拿nums[]={1,2,3,4};
先遍历前缀积,num[0]的1的前缀积为1,num[1],2的前缀积也是1,num[2],3的前缀积为2…,前缀积的[1,1,2,6];
再计算它的后缀积=[1,4,12,24],将前缀积和后缀积进行相乘即可得到目标数组。
result=[16,24,121,241]=[24,12,8,6];
具体代码实现:

 public int[] productExceptSelf(int[] nums) {         int arr []=new int[nums.length];         int arr1 [] =new int[nums.length];         int pre = 1;         //计算前缀积         for (int i = 0; i < nums.length; i++) {             arr[i]=pre;             pre=pre*nums[i];         }         //计算后缀积         int last = 1;         for (int i =nums.length-1;i>=0;i--){             arr1[i]=last;             last=last*nums[i];         }         //得到目标数组         for (int i = 0; i < nums.length; i++) {             arr[i]=arr[i]*arr1[i];         }           return arr; 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!