剑指 Offer 66. 构建乘积数组

发布时间 2023-06-01 15:28:48作者: ZDREAMER

题目描述:

给定一个数组 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]。不能使用除法。

 

 

 

class Solution{
    public int[] constructArr(int a[]){
        int len = a.length;
        if(len==0) return new int[0];
        int b[] = new int[len];
        b[0]=1;
        int tmp=1;
        for(int i=1;i<len;i++){//下三角
            b[i]=b[i-1]*a[i-1];
        }
        for(int i=len-2;i>=0;i--){
            tmp*=a[i+1];//上三角
            b[i]*=tmp;//下三角*上三角
        }
        return b;
    }
}