122.Best Time to Buy and Sell Stock II
与121不同的在于,121只能操作一次,而这个是可以操作任意次。
1
2
3 Input: [7,1,5,3,6,4]
Output: 7
Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4.Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3.
brute force
暴力搜索,没什么好说的
当前位置 $i$ ,搜索其后所有的可能答案,取最大的
1 | def brute_force(arr, start): |
时间复杂度$O(n^n)$ , 空间复杂度$O(n)$
Peak Valley Approach
给定的
price
数组为$[7, 1, 5, 3, 6, 4]$. 绘制图片有(来自leetcode)显然有,最终的收益来自于所有的峰值减去谷值之和
$Total_Profit = \sum_i(height(peak_i)-height(valley_i))$
1 | def Peak_Valley(prices): |
时间复杂度$O(n)$, 空间复杂度$O(1)$
Simple One Pass
跟上面略微不同的是,只要斜率是正的,就一直买入卖出就可以获得最大利润
1 | def One_Pass(prices): |
时间复杂度$O(n)$, 空间复杂度$O(1)$
本文标题:122.Best Time to Buy and Sell Stock II
文章作者:王二
发布时间:2018-09-06
最后更新:2024-11-06
原始链接:https://wanger-sjtu.github.io/Best_Time_to_Buy_and_Sell_Stock_II/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!