求无序数组最大差值
2016-04-15 23:59
183 查看
hulu的一道面试题,比如你预先知道股票的每天的股价,让你算出哪一天买入 哪一天卖出赚的最多。
这个可以变形为找出一个无序数组中后面的数减去前面的数的最大值。
简单粗暴的解法就是遍历了 复杂度O(n^2)
这其实是个很典型的DP问题,复杂度O(n)。
转换公式是这样的:
S0 = 0
Sn = Tn > 0 ? Tn : 0 (Tn = an - an-1 + Sn-1)
伪代码:
这个可以变形为找出一个无序数组中后面的数减去前面的数的最大值。
简单粗暴的解法就是遍历了 复杂度O(n^2)
这其实是个很典型的DP问题,复杂度O(n)。
转换公式是这样的:
S0 = 0
Sn = Tn > 0 ? Tn : 0 (Tn = an - an-1 + Sn-1)
伪代码:
MinIdx = 0 MaxIdx = 0 S[0] = 0 MaxR = INTMIN FOR i IN (1->n) : DO tmp = A[i] - A[i-1] + S[i-1] IF tmp > 0 : S[i] = tmp IF S[i] > MaxR: MaxIdx = i MaxR = S[i] FI ELSE : S[i] = 0 MinIdx = i FI DONE PRINT MinIdx,MaxIdx,MaxR
相关文章推荐
- 高级工程师面试经验宝典
- LeetCode|Sliding Window Maximum
- 巩固C语言(五)----获取CMD输出的字符串 & 字符串的拷贝、查找、长度 & 实例之调戏QQ
- iOS:tableView表头下拉放大的效果
- flask安装mysql-python出错(环境ubuntu14.04)
- 数据结构
- HashSet下的字符串排序,关键字,HashSet转TreeSet()
- 黄勇-架构探险(从零开始写Java Web框架)第一章节学习日记
- 福州大学第十二届程序设计竞赛-H - 最小花费
- 案例分析企业网站基本SEO优化修改建议
- 深入浅出UML类图
- (LeetCode 231)Power of Two
- SPOJ 1812 LCS2 后缀自动机
- 如何阅读一本书(5)
- gen_server
- Android开发常遇问题——Duplicate files copied in APK META-INF/LICENSE.txt(IDE 是 Android studio )
- 《BuildingMachineLearningSystemsWithPython》学习笔记
- HDU 3183 贪心
- 【HDU】2041-超级楼梯
- 福州大学第十二届程序设计竞赛-G - Escape