构建乘积数组

构建乘积数组

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

上三角和下三角,这个思路比较有意思,其实正常的逻辑是遍历数组然后跳过某些值,但是这样的循环很烦躁,太暴力了,时间是 n^2,现在有一种n的循环,只用遍历两次,前半部分分别算,后半部分分别算,保存起来再合并不就完美了

清晰思路代码:

public int[] multiply(int[] A) {
        int [] b1=new int [A.length];
        int [] b2=new int [A.length];

        for(int i=0;i<A.length;i++){
            if(i==0){
                b1[i]=1;
            }else{
                b1[i]=b1[i-1]*A[i-1];
            }
        }
        for(int i=A.length-1;i>=0;i--){
            if(i==A.length-1){
                b2[i]=1;
            }else {
                b2[i]=b2[i+1]*A[i+1];
            }
        }
        for(int i=0;i<A.length;i++){
            b1[i]=b1[i]*b2[i];
        }
        return b1;
    }
全部评论

相关推荐

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