【剑指offer】构建乘积数组
来源:互联网 发布:风力发电现状 知乎 编辑:程序博客网 时间:2024/06/04 20:17
题目:给定一个数组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层循环,虽然也能做出来,但是时间复杂度是O(n2),因此想着能不能优化一下算法,减少时间复杂度。参考了别人的思想,自己用程序实现。思想很简单,我们用2个数组a,b,a[i]保存原数组第i个元素左边的所有元素之积,b[i]保存原数组第i个元素右边的所有元素之积,然后数组a和数组b的元素对应相乘就得到了新数组,时间复杂度为O(n),思想是不是很简单。
程序:
vector<int> multiply(const vector<int>& A) { if (A.empty()) return A; int n = A.size(), i = 1; vector<int> b(n, 0), c(n, 0); b[0] = 1; c[n - 1] = 1; while (i < n) { b[i] = b[i - 1] * A[i - 1]; //求b[i]; c[n - 1 - i] = c[n - i] * A[n - i]; //求c[i]; i++; } i = 0; while (i < n) { b[i] = b[i] * c[i]; i++; } return b; }
阅读全文
0 0
- 剑指offer--构建乘积数组
- 《剑指offer》构建乘积数组
- 剑指offer-构建乘积数组
- 剑指offer:构建乘积数组
- 剑指offer:构建乘积数组
- 剑指offer:构建乘积数组
- [剑指offer]构建乘积数组
- 剑指offer|构建乘积数组
- 《剑指offer》-构建乘积数组
- 剑指offer 构建乘积数组
- 构建乘积数组--剑指Offer
- 【剑指offer】构建乘积数组
- 《剑指offer》构建乘积数组
- 剑指offer-构建乘积数组
- 剑指offer--构建乘积数组
- 构建乘积数组 剑指offer
- 剑指offer-构建乘积数组
- 剑指offer:构建乘积数组
- Android 生产者模式和消费者模式 --- 【应用场景】
- C++课堂笔记0706
- 数据结构面试题
- mybatis
- [LeetCode 解题报告]015. 3Sum
- 【剑指offer】构建乘积数组
- JAVA——常用函数收集
- BZOJ 3343 教主的魔法 暴力分块做法
- EA&UML日拱一卒-活动图::Signal,Event和Trigger
- TensorFlow ReLUs
- 多进程+协程
- mybatis和hibernate的区别
- c语言连接mysql数据库的实现方法
- 远程通信框架(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比