给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] java解法

解题思想:题目要求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

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页