思路
利用两个空数组left(left[i]表示nums下标从0到i的乘积)和right(right[i]表示nums下标从n-1到i的乘积)
解题方法
返回数组nums[i]=right[i+1]*left[i-1],第一个元素和最后一个元素单独考虑
Code
class Solution {public int[] productExceptSelf(int[] nums) {int n=nums.length;int left[]=new int[n];int right[]=new int[n];left[0]=nums[0];right[n-1]=nums[n-1];for(int i=1;i<n;i++){left[i]=nums[i]*left[i-1];}for(int i=n-2;i>=0;i--){right[i]=nums[i]*right[i+1];}for(int i=0;i<n;i++){if(i==0){nums[i]=right[i+1];}else if(i==n-1){nums[i]=left[i-1];}else{nums[i]=right[i+1]*left[i-1];}}return nums;}
}