1. 题目

给定一个数组 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]不能使用除法

示例:
输入: [1,2,3,4,5]
输出: [120,60,40,30,24]提示:
所有元素乘积之和不会溢出 32 位整数
a.length <= 100000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 正向扫描获取每个数左侧的乘积
  • 反向扫描获取每个数右侧的乘积
  • 最后扫描一遍得到除自身外的两侧乘积相乘
class Solution {public:vector<int> constructArr(vector<int>& a) {int n = a.size(), i, product = 1;vector<int> left(n,1), right(n,1);for(i = 1; i < n; ++i){product *= a[i-1];left[i] = product;}product = 1;for(i = n-2; i >= 0; i--){product *= a[i+1];right[i] = product;}vector<int> ans(n);for(i = 0; i < n; ++i)ans[i] = left[i]*right[i];return ans;}
};

剑指Offer - 面试题66. 构建乘积数组(正反遍历)相关推荐

  1. 剑指offer面试题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].不能使用 ...

  2. 【有返回值的回溯法】剑指offer——面试题66:矩阵中的路径(回溯法)

    剑指offer--面试题66:矩阵中的路径(回溯法) Solution:1 典型的回溯算法及代码 此题是回溯法的典型例题,思路以及代码均是书中所讲.要具体实现很有参考价值,借鉴之! 现在把书中代码贴在 ...

  3. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  4. 剑指offer——面试题33:把数组排成最小数

    剑指offer–面试题33:把数组排成最小数 Solution1: 20180904复习.重点记忆比较技巧!!! 代码参考网址:https://www.nowcoder.com/profile/416 ...

  5. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面

    剑指offer--面试题14:调整数组顺序使奇数位于偶数前面 Solution1: 顺序交换,比较好的算法!!! class Solution { public:void reOrderArray(v ...

  6. 剑指offer——面试题8:旋转数组的最小数字

    剑指offer--面试题8:旋转数组的最小数字 Solution1: 自己想的复杂度为O(n)O(n)O(n)的算法,若用二分查找则: 1.代码复杂:2.最坏情况下的二分查找的时间复杂度亦为O(n)O ...

  7. 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  8. [剑指offer]面试题8:旋转数组的最小数字

    面试题8:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2 ...

  9. 剑指offer 面试题3—二维数组中找数

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 基本思想: 首先选取数组 ...

最新文章

  1. CentOS 7 的初始化
  2. 如何利用Partitioner将消息路由到分区?
  3. jakarta_MicroProfile在Jakarta EE时代的作用
  4. 团购网站的兴衰与启示
  5. PCRE接口pcre_fullinfo混合子模式调用结果
  6. 老司机带你重构Android的v4包的部分源码
  7. android webview sql database,websql在openDatabase报version mismatch错误,请问怎么解决?
  8. void ,NULL与0的区别联系
  9. macOS的控制台Console.app
  10. (转)在编写Spring框架的配置文件时,标签无提示符的解决办法
  11. bzoj 1716 找零钱
  12. html ie浏览器写入内容,js在IE下创建本地文件,并读取内容
  13. php表单yii2,yii2教程-ActiveForm表单组件
  14. vuex的store机制1
  15. 深度篇——目标检测史(五) 细说 SSD 目标检测
  16. 浅谈激光导航对机器人自主行走的重要性
  17. CCS 报警告 #10247-D
  18. Java英语单词(5000个)
  19. 单元测试中不能加入参数
  20. JSP与JavaBeans

热门文章

  1. linux中的信号1——信号概述
  2. 计算机统考分数短信显示合格,今年起全省八年级网考信息技术 成绩不合格不能升高中...
  3. python3进阶开发-第一个仿博客园的项目(1)
  4. BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】
  5. 使用二分查找向一个有序数组中插入一个数据
  6. Google-优秀移动站点设计10招
  7. android客户端在多个界面切换时保持socket的链接的实例
  8. 软件测试课程学习总结
  9. 在mojoportal项目中发邮件使用的是dotnetopenmail
  10. ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较