emmm,先把所有数字的乘积求出来再除以每个下标对应的数,有一个顾虑是都乘起来的结果会不会很大,whatever,先让我试一下吧,在写的过程中又想到了可能会有0的出现,没有处理好,看了一下discussion,思想是先记录从第一个元素到当前元素的乘积,然后从右往左边计算边更新,不要忘记先把res[0]=1预处理==
class Solution {
public int[] productExceptSelf(int[] nums) {
int l = nums.length;
int[] res = new int[ l ];
int pro = 1;
res[ 0 ] = 1;
for( int i = 1 ; i < l ; i ++ ){
res[ i ] = res[ i - 1 ] * nums[ i - 1 ];
}
for( int i = l - 1 ; i >= 0 ; i -- ){
res[ i ] *= pro;
pro *= nums[ i ];
}
return res;
}
}