力扣题解——122.买股票的最佳时机II(贪心算法)

什么是贪心算法

在讲解本体前肯定有同学会有疑问,什么是贪心算法呢?
贪心算法总结成一句话,就是:由局部最优解推出全局最优解

可能在你看到了这句话以后还是不太清楚贪心算法的具体用法,没关系,我们从题目中入手,就能够更直观地看出贪心算法的应用

122. 买卖股票的最佳时机 II

先来看看具体的题目:
在这里插入图片描述

问题分析

简单来说,就是给你当日的股票价格,每天只能买进或者卖出股票,要求得这些天中能获得的最大利润

解题思路

股票嘛,有涨有跌。提起股票,我们脑中是不是浮现了股票走势的曲线图?那我们就可以把题目给出的数据转化为折线图先看看。
我们先以第一组数据为例:
在这里插入图片描述

局部最优解

我们再从图中观察,怎么样才算是我们赚了呢?很简单,就是折线上升的这些距离

全局最优解

想要求得给定天数中获得的最大利润,我们就将所有处于上升阶段的线段加和就可以了
在这里插入图片描述

代码

经过上面的详细分析,我们很容易写出如下代码:

class Solution {
    public int maxProfit(int[] prices) {
        if(prices.length<=1) return 0;
        int res=0;
        for(int i=1;i<prices.length;i++){
          int curProfit=prices[i]-prices[i-1];
           if(curProfit>0)
            res+=curProfit;
        }
        return res;
    }
}

总结

怎么样,这题的思路是不是很简单?而且我们在不知不觉中就已经使用的贪心算法

还记得我们是怎么描述贪心算法的吗? 由局部最优解推出全局最优解

局部最优解在此题中我们可以理解为图中的上升线段
那么全局最优解就是所有上升线段的加和啦

怎么样,了解了贪心算法后是不是以前在不知不觉中也曾经用过贪心算法?贪心算法本身是一种非常常见的思考问题的方法,多加练习,相信大家一定能够更加熟练地掌握贪心算法!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值