LeetCode-122 买卖股票的最佳时机 II
买卖股票的最佳时机 II
题目描述
给你一个整数数组 prices
,其中 prices[i]
表示某支股票第 i
天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
数据样例
示例 1:
1 | 输入:prices = [7,1,5,3,6,4] |
示例 2:
1 | 输入:prices = [1,2,3,4,5] |
示例 3:
1 | 输入:prices = [7,6,4,3,1] |
提示:
- $1 \leq prices.length \leq 3 * 10 ^ 4$
- $0 \leq prices[i] \leq 10 ^ 4$
贪心 - $O(N)$
贪心
首先,题目说 可以在同一天买和卖股票,因此可以 贪心考虑:
- 如果第二天价格升高,则当天买入,第二天卖出
贪心简单证明 如下:
因此:依次从左至右枚举整个数组,如果后天比当天价格高,则当天买入次日卖出,将所有收益累加起来即可。
时间复杂度 - $O(N)$
- 枚举一遍数组,时间复杂度为 $O(N)$
代码
1 | func maxProfit(prices []int) int { |
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cat's Blog!
评论