当前位置: 代码迷 >> 综合 >> 给定一个数组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解法
  详细解决方案

给定一个数组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解法

热度:97   发布时间:2024-02-04 20:17:08.0

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