构建乘积数组
2015-09-16 16:59
381 查看
题目描述
给定一个数组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]。不能使用除法。思路:这题我原本的方法比较暴力,复杂度为O(n^2),后参考剑指的方法,复杂度降为O(n).涉及到这种容易重复计算的要考虑用空间记录前列的结果
//数组乘积 #include <vector> #include <iostream> using namespace std; vector<int> multiply(const vector<int>& A) { vector<int> v; v.push_back(1); for(int i=1;i<A.size();i++) v.push_back(A[i-1]*v[i-1]); int temp=1; for(int i=A.size()-1;i>=0;i--) { v[i]*=temp; temp*=A[i]; } // O(n^2) /*for(int i=0;i<A.size();i++) { int num=1; for(int j=0;j<A.size();j++) if(i!=j) num*=A[j]; result.push_back(num); num=1; }*/ return v; } void main() { vector<int> a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(5); a.push_back(6); a.push_back(7); a.push_back(8); vector<int> b=multiply(a); for(int i=0;i<b.size();i++) cout<<b[i]<<" "; system("pause"); }
相关文章推荐
- ---------- 常用链接 ----------
- Java从包中读取所有的class文件
- Android快速开发常用工具类
- Java从包中读取所有的class文件
- 【LeetCode】Balanced Binary Tree 解题报告
- 「回溯法」Palindrome Partitioning
- nginx随着passenger构造ruby on rails页
- [动态规划]保存子问题的结果
- xenserver
- MySQL多实例安装
- 火车头采集器在线发布模块制作教程
- Get classpath for current running thread
- android Bitmap内存优化(四) android 本地资源图片的处理
- Android 实现ListView的A-Z字母排序及过滤搜索功能(通讯录)
- 安装Redis和Redis Cluster
- TCP报文段首部详解
- 学习Linux第三天
- sql语句:创建事物
- poj_2406 kmp
- Android的隐式意图