构建乘积数组_JAVA_简单

构建乘积数组

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

  • 目标数组的i对应元素是原数组不包括i元素的乘积,即B[i] = (A[0]*...*A[i-1]) * (A[i+1]*...*A[n-1]),即左侧乘以右侧
  • 可以用一次正循环计算左侧乘积,再来一次逆循环计算右侧乘积的同时计算B[i]
public class Solution {
    public int[] multiply(int[] A) {
        int[] B = new int[A.length];
        // 计算i左侧乘积存入B
        B[0] = 1;
        for(int i = 1; i < A.length; i++) {
            B[i] = A[i - 1] * B[i - 1];
        }
        // 累积i右侧乘积乘以左侧乘积
        int right = 1;
        for(int i = A.length - 1; i >= 0; i--) {
            B[i] = B[i] * right;
            right *= A[i];
        }
        return B;
    }
}
全部评论

相关推荐

想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务