题目描述

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

解题思路

设有数组大小为5。

对于第一个for循环

第一步:b[0] = 1;
第二步:b[1] = b[0] * a[0] = a[0]
第三步:b[2] = b[1] * a[1] = a[0] * a[1];
第四步:b[3] = b[2] * a[2] = a[0] * a[1] * a[2];
第五步:b[4] = b[3] * a[3] = a[0] * a[1] * a[2] * a[3];

对于第二个for循环

第一步

temp *= a[4] = a[4];
b[3] = b[3] * temp = a[0] * a[1] * a[2] * a[4];

第二步

temp *= a[3] = a[4] * a[3];
b[2] = b[2] * temp = a[0] * a[1] * a[4] * a[3];

第三步

temp *= a[2] = a[4] * a[3] * a[2];
b[1] = b[1] * temp = a[0] * a[4] * a[3] * a[2];

第四步

temp *= a[1] = a[4] * a[3] * a[2] * a[1];
b[0] = b[0] * temp = a[4] * a[3] * a[2] * a[1];

代码实现

class Solution {public:vector<int> multiply(const vector<int>& A) {vector<int> res;int length1 = A.size();if(length1 == 0)return res;res.push_back(1);for(int i=1;i<length1;++i)res.push_back(res[i-1]*A[i-1]);double temp =1;for(int i=length1-1;i>=0;--i){res[i]= res[i]*temp;temp*=A[i];}return res;}
};

【剑指offer】_16 构建乘积数组相关推荐

  1. 【LeetCode】剑指 Offer 66. 构建乘积数组

    [LeetCode]剑指 Offer 66. 构建乘积数组 文章目录 [LeetCode]剑指 Offer 66. 构建乘积数组 package offer;import java.util.Arra ...

  2. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  3. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组

    题目描述:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]. 其中B中的元素B[i]=A[0] * A[1]... * A[i-1] * A[i+1]... * A ...

  4. 剑指offer:构建乘积数组

    题目描述 给定一个数组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].不能使用除法. 解题 暴力 ...

  5. 《剑指offer》构建乘积数组

    题目:给定一个数组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].不能使用除法. 解析:由于不能 ...

  6. java单个数组求积_[剑指offer][Java]构建乘积数组

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

  7. 【算法】剑指 Offer 66. 构建乘积数组

    1.概述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[ ...

  8. 剑指offer之构建乘积数组

    题目描述 给定一个数组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]B[i]=A ...

  9. (Java 剑指 offer)构建乘积数组

    文章目录 一.题目解析 二.代码一 三.代码二 四.总结 一.题目解析 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素 B[i]=A[0]*A[1 ...

  10. 剑指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].不能使 ...

最新文章

  1. 烽火服务器装系统,烽火 FitServer R2200 V5 机架式服务器
  2. as5300g2 nas软件功能_【NAS教程】2.NAS的概念及选型
  3. 编写一个自己的完全C语言版本的memset函数,并且评价这个实现的性能和可移植性。
  4. 【企业管理】摆脱三个依赖
  5. 软件工程进度条-第十五周
  6. docker容器运行mysql持久化_OS x下使用Docker 持久化Mysql 数据出现问题
  7. 昨天,A站受黑客攻击千万条用户数据外泄,量子加密能救得了吗?
  8. eclipse里source的快捷方法_教你如何在Linux中设置快捷方式图标
  9. 关于Mysql5.5在关键字方面的变化
  10. netmon中解析非1433端口的TDS协议
  11. Keli5 更改任意喜欢的字体
  12. Excel远程连接Oracle,excel连接数据库_怎么用oracle命令连接远程数据库�9�3
  13. Ubuntu16.04.2中安装minidwep
  14. 独立开发者能够从这位作家身上学些什么
  15. 同一网络俩台计算机连接,两台电脑连接同一个wifi算是局域网么
  16. win10热点开启后,手机可以连上热点但无法连接网络
  17. 高级路由交换题库 答案与解释
  18. 【蓝桥杯每日一练:小z的序列游戏-k】
  19. vue 页面卡顿(数据量大)
  20. quantopian寻找策略之mean_reversion

热门文章

  1. 使用镜像源安装EASY_INSTALL和PIP教程
  2. 复选框操作checked选中为true,反之为False,也可以赋值为true,false
  3. tokumx经营报表
  4. Eclipse 代码提示无效的解决方法
  5. Pocket PC/Smartphone软件安装包之制作DIY
  6. 关于 SENDKEYS 的代码
  7. 两个数相乘积一定比每个因数都大_小升初数学知识点大全含公式+20类必考应用题(含答案解析),孩子考试一定用得上!...
  8. linux 修改jmeter内存溢出,jmeter本机内存溢出如何修改?
  9. Java代码格式化算法_一个时间格式化的工具类:TimeUtil
  10. Python3.6 IDLE 使用 multiprocessing.Process 不显示执行函数的打印