1 题目描述
给定一个数组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]。不能使用除法。
分析:
直接元素A[i]左右两侧各个元素的乘积left和right,它俩的乘积left x right就是最终的结果啊。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public int[] constructArr(int[] a) { if(a.length==0)return a; int[] lefts=new int[a.length]; int[] rights=new int[a.length]; lefts[0]=a[0]; rights[a.length-1]=a[a.length-1]; for(int i=1;i<a.length-1;i++){ lefts[i]=lefts[i-1]*a[i]; rights[a.length-1-i]=rights[a.length-i]*a[a.length-1-i]; } int[] results=new int[a.length]; results[0]=rights[1]; results[a.length-1]=lefts[a.length-2]; for(int i=1;i<a.length-1;i++){ results[i]=lefts[i-1]*rights[i+1]; } return results; } }
|
提交结果:
面试字节的时候没有想法,看了一下网上的解答思路,发现这么简单,哭晕在路上。