2022-7-17 剑指offer-数组

剑指 Offer 66. 构建乘积数组

难度中等

给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。

 

 1 class Solution {
 2     public int[] constructArr(int[] a) {
 3         int n=a.length;
 4         if (n==0) return new int[]{};
 5         int[] left=new int[n];
 6         int[] right=new int[n];
 7         left[0]=1;
 8         right[n-1]=1;
 9         int i=1,j=n-2;
10         for (;i<n&&j>=0;i++,j--){
11             left[i]=left[i-1]*a[i-1];
12             right[j]=right[j+1]*a[j+1];
13         }
14         int[] ans=new int[n];
15         for (int k=0;k<n;k++){
16             ans[k]=left[k]*right[k];
17         }
18         return ans;
19     }
20 }

思路:搭建两个辅助数组,让b等于辅助数组的乘积。

posted on 2022-07-17 11:35  阿ming  阅读(20)  评论(0)    收藏  举报

导航