剑指offer-51

构建乘积数组

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

维护两个l-1的数组,一个存储从0到i的乘积,另一个存储从l-1到i-1的乘积,B[i] = B0[i-1]*B1[i]。2n的空间,3n的时间

import java.util.ArrayList;
public class Solution {
    public int[] multiply(int[] A) {
        int l = A.length;
        int[] B = new int[l];
        int[] B0 = new int[l-1];
        int[] B1 = new int[l-1];
        B0[0] = A[0];
        for(int i=1;i<l-1;i++){
            B0[i] = B0[i-1]*A[i];
        }
        B1[l-2] = A[l-1];
        for(int i=l-3;i>=0;i--){
            B1[i] = B1[i+1]*A[i+1];
        }
        B[0] = B1[0];
        B[l-1] = B0[l-2];
        for(int i=1;i<l-1;i++){
            B[i] = B0[i-1]*B1[i];
        }
        return B;
    }
}
全部评论

相关推荐

07-11 13:16
湖南工学院 Java
坚定的芭乐反对画饼_...:谁也不知道,毕竟现在的互联网和十年前已经完全不同了,谁都无法预测未来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务