解题思想:题目要求B的i个元素等于A中除了i个元素所以元素乘积因此思路很清晰,双重循环:第一层循环表示将要相乘A的元素;
第二层循环表示B中的元素要乘上A的元素(判断条件:i==j则直接跳过)。
import java.util.ArrayList;
public class Solution {public int[] multiply(int[] A) {int B[]=new int[A.length];int sum=1;for(int i=0;i<A.length;i++){for(int j=0;j<A.length;j++){if(i==j){continue;}sum*=A[j];}B[i]=sum; sum=1;}return B;}
}
总结:做这一题遇到的坑。
1.new的B[],初始值都是0,下方如果使用连乘时,输出全部会是0
2.辅助值sum没有重置,导致数值越来越大
3.if(i==j)中刚开始是想用A[j]=1处理,但是这样就会改变数组里的值,导致下次循环连乘的值错误,
因此改为continue,这样跳过相等时的值。
4.我好菜o(╥﹏╥)o