=========================================================================
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。不能使用除法。
左右乘积列表
L[i]存储i左边所有乘积
R[i]存储i右边所有乘积
遍历完直接相乘即可
进阶
节省空间可以先让ans从左到右遍历一遍,再从右到左遍历一遍,这样就不需要额外空间
注意一开始是ans存储L[i]后来用R充当R[i]的作用,两个循环不一样
class Solution {
public int[] productExceptSelf(int[] nums) {
int l=nums.length;
int[] ans=new int[l];
ans[0]=1;
for(int i=1;i<l;i++){
ans[i]=ans[i-1]*nums[i-1];
}
int R=1;
for(int i=l-1;i>=0;i--){
ans[i]=ans[i]*R;
R*=nums[i];
}
return ans;
}
}