构建乘积数组-Java实现

构建乘积数组

http://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46

一. 思路

题目要求不能使用除法。根据题意列出一个矩阵,分别计算下三角形以及上三角形,上下三角形相乘即可。如下图:
图片说明

解释:

下三角形
B[0] = 1;
B[1] = A[0] * 1 = A[0] * B[0];
B[2] = A[0] * A[1] * 1 = A[1] * A[0] * 1 = A[1] * B[1]

也就是下三角形的值B[i] = B[i-1] * A[i-1]; 

上三角形以此类推

二. 代码

import java.util.ArrayList;
public class Solution {
    public int[] multiply(int[] A) {
        int length = A.length;
        int[] B = new int[length];

        // 边界
        if (A == null || A.length <= 1) return null;

        // 计算下三角
        // 初始化第一行
        B[0] = 1;
        for (int i = 1; i < length; i++) {
            B[i] = B[i-1] * A[i-1];
        }

        // 计算上三角
        // 初始化最后一行(注意,此时B数组已经存储了下三角的值)
        int temp = 1;
        for (int i = length-1; i >= 0; i--) {
            B[i] = temp * B[i];
            temp = temp * A[i];
        }

        return B;
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务