剑指offer-面试题52:构建乘积数组
来源:互联网 发布:自学编程入门教程 编辑:程序博客网 时间:2024/06/03 15:53
题目:给定一个数组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[0]*A[1]*…*A[i-1],这是一个累乘的过程,如果乘积用C[i]表示,有C[i] = C[i-1]*A[i-1]。后半部分用D[i]表示,有D[i] = A[i+1]*…*A[n-1] = A[i+1]*D[i+1],设定c[i]的初始值之后采取顺序求取的过程,而D[i]的值必须先知道D[i+1],采取反序求的过程。
void multiply(const vector<double>& array1, vector<double>& array2){ int length1 = array1.size(); int length2 = array2.size(); if(length1 == length2 && length2 > 1) { array2[0] = 1; for(int i = 1; i < length1; ++i) array2[i] = array2[i-1] * array1[i-1]; int temp = 1; for(int i = length1 - 2; i >= 0; --i) { temp *= array1[i+1]; array2[i] *= temp; } }}
0 0
- 《剑指Offer》学习笔记--面试题52:构建乘积数组
- 【剑指Offer学习】【面试题52:构建乘积数组】
- 剑指offer-面试题52:构建乘积数组
- 剑指offer--面试题52:构建乘积数组
- 剑指Offer面试题52:构建乘积数组 Java实现
- 剑指Offer系列-面试题52:构建乘积数组
- 剑指offer-面试题52-构建乘积数组
- 剑指offer 面试题52 构建乘积数组
- 【剑指Offer】面试题52:构建乘积数组
- 【剑指Offer学习】【面试题52:构建乘积数组】
- 剑指offer——面试题52:构建乘积数组
- 【剑指offer】面试题66:构建乘积数组
- 面试题52:构建乘积数组
- 面试题52: 构建乘积数组
- 面试题52:构建乘积数组
- 《剑指offer》:[52]构建乘积数组
- 剑指Offer 52 构建乘积数组
- 【剑指offer】题52:构建乘积数组
- 程序员的自我修养_之二_曾国藩的“大悔大悟”
- java double转string
- 编程学习笔记之java相关::内存回收原理
- listview与其他控件的布局问题
- Lightoj-1314 Names for Babies(后缀数组)
- 剑指offer-面试题52:构建乘积数组
- 杭州--4.25
- 试试Linux下的ip命令,ifconfig已经过时了
- poj2955Brackets区间dp(括号匹配)
- 【南理工oj】116 - 士兵杀敌(二)(线段数 & 树状数组)
- HBase数据模型解析和基本的表设计分析
- Java的子类和父类实例化顺序
- Codeforces 669D 模拟
- Redis的快照持久化-Redis学习笔记三