思路
去除本身,两边所有元素的和,如果可以用除法,所有元素之积除以本身。不能用除法,其实左边是累积,右边是倒序的累积
先求两个辅助数组,累积数组和倒序累积数组。然后B[i]=help1[i-1]*help[i+1];
代码
public class Solution { public int[] multiply(int[] A) { int n=A.length; int[] B=new int[n]; int[] help1=new int[n]; int[] help2=new int[n]; help1[0]=A[0]; for(int i=1;i<n;i++){ help1[i]=A[i]*help1[i-1]; } help2[n-1] = A[n-1]; for(int i=n-2;i>=0;i--){ help2[i]=A[i]*help2[i+1]; } B[0]=help2[1]; B[n-1]=help1[n-2]; for(int i=1;i<=n-2;i++){ B[i]=help1[i-1]*help2[i+1]; } return B; } }