股票,最大收益
2014-08-13 21:58
281 查看
题目:Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (ie, buy one and sell one share
of the stock), design an algorithm to find the maximum profit.
思路:只允许一次买卖。如果考虑先找一个极小值,再找一个极大值,极小值位于极大值的左边,比较困难。
可以换个思路,将股票的价格抽象为一个数组。从左到右扫这个数组,low保存最小值,max保存最大差值。不断往右扫描,更新low和max,这样就能保证最大的值一定在low的右边,并且最大差值最后也被保存下来了。
(用变量保存最值,在遍历过程中不断更新最新的方法比较常见,例如最大子序列和)
of the stock), design an algorithm to find the maximum profit.
思路:只允许一次买卖。如果考虑先找一个极小值,再找一个极大值,极小值位于极大值的左边,比较困难。
可以换个思路,将股票的价格抽象为一个数组。从左到右扫这个数组,low保存最小值,max保存最大差值。不断往右扫描,更新low和max,这样就能保证最大的值一定在low的右边,并且最大差值最后也被保存下来了。
(用变量保存最值,在遍历过程中不断更新最新的方法比较常见,例如最大子序列和)
int maxProfit(int a[], int length) { int maxDiff = 0; // 保存最大差值 int curDiff = 0; // 保存当前最大差值 int low = a[0]; // 保存最小值 // 从左向右扫描 for(int i = 1; i < length; i ++) { curDiff = a[i] - low; // 记录当前的最大差值 if(a[i] < low) { // 当前股票价格低于最低价 low = a[i]; // 当前最低股票价格置为最低价格 } if(curDiff > maxDiff) { maxDiff = curDiff; // 更新最大差值 } } return maxDiff; }
相关文章推荐
- 面试题38:股票最大收益问题
- 买卖股票收益最大问题
- 算法-股票交易最大收益
- java计算股票一段时间内最大收益
- 算法导论之求股票最大收益
- 小米笔试-股票最大收益(动态规划)
- leetcode_121. Best Time to Buy and Sell Stock 求股票的最大收益 动态规划
- 一段时间内两次买进卖出股票使得收益最大(C++版)
- 最大股票收益问题(数组最大差问题)
- 最多n次购买时股票最大收益问题
- 股票最大收益问题3 Best Time to Buy and Sell Stock III
- Best Time to Buy and Sell Stock 股票交易最大收益
- LeetCode 121. Best Time to Buy and Sell Stock--股票买入后再卖出,求最大收益,最多交易一次
- 股票最大收益问题
- 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。
- 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<
- 股票最大收益问题及数组最大差值问题
- 网易游戏面试--两次股票买入卖出的最大收益
- 双重DP实例2:K次购买股票的最大收益
- 122. Best Time to Buy and Sell Stock II (求股票买卖最大收益)