题目:
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。
注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
思路:
做出这道题需要理解:在每个波谷买入并且在每个波谷之后的波峰卖出(交易多次)所获得的收益肯定是大于或等于在最低点买入在最高点卖出(交易一次)所
获得的收益。明白了这一点就很好做出此题,即算出每个波谷波峰直接的差值,并相加即可。
代码:
1 | // 贪心算法 |
复杂度分析:
动态规划:
时间复杂度:
O(n)。
空间复杂度:
O(1)。
原题链接:
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/