LeetCode122. 买卖股票的最佳时机 II
发布日期:2021-05-14 23:50:56 浏览次数:18 分类:精选文章

本文共 964 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

方法一:
在这里插入图片描述

class Solution {   public:    int maxProfit(vector
& prices) { if(prices.size()==0)return 0; int buy,sell; int sum = 0; for(int i = 0; i < prices.size()-1; i++){ while(i < prices.size()-1 && prices[i]>=prices[i+1]){ //找峰谷 i++; } buy = prices[i]; while(i < prices.size()-1&&prices[i]<=prices[i+1]){ //找封底 i++; } sell = prices[i]; sum += sell - buy;//相减得到一次最大利益 } return sum; }};

时间复杂度O(n)

空间复杂度O(1)
方法二:
在这里插入图片描述
从上图中,我们可以观察到 A+B+CA+B+C 的和等于差值 DD 所对应的连续峰和谷的高度之差。

class Solution {   public:    int maxProfit(vector
& prices) { int sum = 0; for(int i = 0; i < (int)prices.size()-1; i++){ if(prices[i+1]>prices[i]){ //通过方法二,规律为所有上升值的和 sum += prices[i+1] - prices[i]; } } return sum; }};

时间复杂度O(n)

空间复杂度O(1)

上一篇:LeetCode121. 买卖股票的最佳时机
下一篇:LeetCode 45/55. 跳跃游戏I/II

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月14日 08时18分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章