构建乘积数组
来源:互联网 发布:模拟矩阵控制键盘 编辑:程序博客网 时间:2024/06/05 22:49
题目:给定一个数组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.如果可以使用除法,最直观的方法就是使用连乘来得到B[i]。这样的方法时间复杂度为O(n2).
2.结合矩阵知识来解决这个问题。
2.结合矩阵知识
时间复杂度为O(n)的算法。
class Solution{public: vector<int> multiply( const vector<int>& A ) { vector<int> B( A.size() ); int length1 = A.size(); int length2 = B.size(); if ( length2 > 1 ) { B[0] = 1; for ( int i = 1; i < length1; ++i ) { B[i] = B[i-1] * A[i-1]; } double temp = 1; for ( int i = length1-2; i >= 0; --i ) { temp *= A[i+1]; B[i] *= temp; } } return B; }};
阅读全文
0 0
- 数组------构建乘积数组
- 数组:构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 52 - 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 牛客网 | 构建乘积数组
- 构建乘积数组
- 【模模糊糊】构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组 java
- cocos-js关于H5checkBOX的BUG解决方案
- ThinkPHP用PHPExcle导出Excel文件
- maven 多工程搭建演示
- Deep MNIST for Experts解读(一):概览
- UE4中常用的几种方法和节点
- 构建乘积数组
- 【转知乎】人工智能会是泡沫吗?
- git冲突
- java 成程序修改文件名字
- 动态修改actionbar的Menu菜单中的显示内容
- 企业里最重要的“自燃人”
- 今晚直播 | 你该如何成功转行数据分析
- 初识机器学习-理论篇
- intellij Idea 部署SpringMVC项目_Project Structrue配置