题目描述

给定一个数组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]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)

 

 

题目链接:

https://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46?tpId=13&&tqId=11204&rp=1&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking

 

分析:

i 的左边连续, 右边也连续。

分别计算 i 的左边与右边。

 

import java.util.ArrayList;
public class Solution {
    public int[] multiply(int[] A) {
        int[] B = new int[A.length];
        if(A.length == 0){
            return B;
        }
        int re = 1;
        //计算 i 的左边
        for(int i = 1;i < A.length;i++){
            re*=A[i - 1];
            B[i] = re;
        }
        re = 1; 
        //计算 i 的右边
        for(int i = A.length -2;i>=0;i--){
            re*=A[i+1];
            B[i]*=re;
        }
        //B[0]因为是0,所以需要赋值
        B[0] = re;
        return B;
    }
}

 

posted on 2020-06-11 00:33  MoonBeautiful  阅读(127)  评论(0编辑  收藏  举报