买卖股票的最佳时机II
力扣 122. 买卖股票的最佳时机 II
题目说明
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
- 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
1 <= prices.length <= 3 * 10 ^ 40 <= prices[i] <= 10 ^ 4
示例
例1
1 | 输入: [7,1,5,3,6,4] |
例2
1 | 输入: [1,2,3,4,5] |
例3
1 | 输入: [7,6,4,3,1] |
笔者理解
此题是一道动态规划算法问题,在力扣题库中被定义为简单题。
解法
当笔者阅读完此题后,发现此题很适合动态规划,我们每一天都分别假设当前的这天买了股票(前提是手上未持有股票)或者持有现金,然后通过两个滚动变量(基于滚动数列的思想)来存储当前的最优解,遍历结束后,最优解就解出来了,让我们来看看具体如何实现的吧。
实现
1 | public int maxProfit(int[] prices) { |
时间和空间效率都不错,可见此解法还比较适合此题;
总结
本题是今天的一题,难度是简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!






