剑指Offer Java版 面试题66:构建乘积数组

题目:给定一个数组 A[0,1,...,n-1],请构建一个数组 B[0,1,...,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×...×A[i-1]×A[i+1]×...×A[n-1]。不能使用除法。

练习地址

https://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46
https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/

参考答案

public class Solution {
    public int[] multiply(int[] A) {
        if (A == null || A.length < 2) {
            return 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 temp = 1;
        for (int i = A.length - 2; i >= 0; i--) {
            temp *= A[i + 1];
            B[i] *= temp;
        }
        return B;
    }
}

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(1)。

👉剑指Offer Java版目录
👉剑指Offer Java版专题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,133评论 0 2
  • 数组 记录《剑指offer》中所有关于数组的题目,以及LeetCode中的相似题目 相关题目列表 说明 由于简书...
    wenmingxing阅读 5,370评论 1 12
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 12,935评论 0 13
  • 闭上你的眼睛,想一些美好的事情。等时光入梦来,等好梦从生活的悲苦里剥离,等梦醒时分依旧记得那些美好。 在20...
    夜里飞行的猫阅读 2,224评论 0 0
  • 这两天下决心早睡,因为我明知晚睡不好,而且想早起做点有意义的事。这个星期开始实行,平常都要11点多才睡,等睡...
    我滴个神唉阅读 2,425评论 0 0