122. Best Time to Buy and Sell Stock II的C++解法
2017-04-27 15:49
381 查看
题目说得不是特别清楚,研究了好几遍,意思其实就是只有一支股票,卖了之后才能再买进,买了之后才能再卖出。但是不限制交易次数。
看起来特别复杂其实用贪心就可以解决。对于每一笔交易 假设是从i天买入 j天卖出 ,如果有j+1天的价格高于j天,所以肯定是从i到j+1利润更高,同样的如果有第i-1天价格比第i天更低,肯定是从i-1天到j天利润更高。画个曲线图更容易理解,只要在低谷买入,高峰卖出,收益就是最大的。
转换成代码就更简单了,只要后一天比前一天价格高,就算收益。
int maxProfit(vector<int> &prices) {
int ret = 0;
for (size_t p = 1; p < prices.size(); ++p)
ret += max(prices[p] - prices[p - 1], 0);
return ret;
}
看起来特别复杂其实用贪心就可以解决。对于每一笔交易 假设是从i天买入 j天卖出 ,如果有j+1天的价格高于j天,所以肯定是从i到j+1利润更高,同样的如果有第i-1天价格比第i天更低,肯定是从i-1天到j天利润更高。画个曲线图更容易理解,只要在低谷买入,高峰卖出,收益就是最大的。
转换成代码就更简单了,只要后一天比前一天价格高,就算收益。
int maxProfit(vector<int> &prices) {
int ret = 0;
for (size_t p = 1; p < prices.size(); ++p)
ret += max(prices[p] - prices[p - 1], 0);
return ret;
}
相关文章推荐
- leetcode_c++:Best Time to Buy and Sell Stock II(122)
- leetcode_[python/C++]_121/122/123/188.Best Time to Buy and Sell Stock I/II/III/IV
- Leetcode_122_Best Time to Buy and Sell Stock II
- LeetCode 122 Best Time to Buy and Sell Stock II
- leetcode122---Best Time to Buy and Sell Stock II
- 122. Best Time to Buy and Sell Stock II
- 122. Best Time to Buy and Sell Stock II
- LeetCode122:Best Time to Buy and Sell Stock II
- 122. Best Time to Buy and Sell Stock II
- 122 Best time to buy and sell stock ii
- c++ leetcode 算法题 Best Time to Buy and Sell Stock II
- leetcode-122 Best Time to Buy and Sell Stock II
- LeetCode: Best Time to Buy and Sell Stock II [122]
- [LeetCode 122] - 买入与卖出股票的最佳时机II(Best Time to Buy and Sell Stock II)
- leetcode[122]Best Time to Buy and Sell Stock II
- LeetCode 122: Best Time to Buy and Sell Stock II
- [leetcode 122] Best Time to Buy and Sell Stock II
- LeetCode 122 Best Time to Buy and Sell Stock II
- LeetCode 122: Best Time to Buy and Sell Stock II
- Lettcode_122_Best Time to Buy and Sell Stock II