两重循环--最笨方法

构建乘积数组

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

import java.util.ArrayList;
public class Solution {
//    方法一: 暴力双重循环---O(N^2)
    public int[] multiply(int[] A) {

        int[] B = new int[A.length];
        for (int i = 0; i < A.length; i++) {
            int temp = 1;
            for (int j = 0; j < A.length; j++) {
                if (j != i)
                    temp *= A[j];
            }
            B[i] = temp;
        }
        return B;
    }
}
//        方法二: 分别计算B的以i为界限左右两侧,这样可以保存并使用上一次计算的B[i-1]的值,以此来降低时间复杂度
    public int[] multiply(int[] A) {
        int[] B = new int[A.length];
        B[0] = 1;
        for (int i = 1; i < A.length; i++) {
            B[i] = B[i - 1] * A[i - 1];
        }
        int right = 1;
        for (int i = A.length - 1; i >= 0; i--) {
            B[i] *= right;
            right *= A[i];
        }
        return B;
    }
全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务