海智算法训练营第三十一天 | 第八章 贪心算法 part02 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

今日任务:

1.利用贪心解决每天利润问题

2.利用贪心覆盖范围解决跳跃问题

3.利用贪心覆盖范围解决跳跃II问题

1.利用贪心解决每天利润问题

力扣题目链接

这道题可以用贪心很简单的做出来,从图中可以发现,其实我们需要收集每天的正利润就可以,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间

复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int sum = 0;
        for (int i = 1; i < prices.length; i++) {
            sum += prices[i] - prices[i-1] > 0 ? prices[i] - prices[i-1] : 0;
        }
        return sum;
    }
}

所以代码实现起来也非常的简单

2.利用贪心覆盖范围解决跳跃问题

力扣题目链接

贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。

复制代码
class Solution {
    public boolean canJump(int[] nums) {
        if(nums.length == 1)    return true;
        int cover = 0;
        for (int i = 0; i <= cover; i++) {
            if(cover >= nums.length - 1)    return true;
            cover = Math.max(i + nums[i] , cover);
        }
        return false;
    }
}

3.利用贪心覆盖范围解决跳跃II问题

力扣题目链接

这道跳跃II的问题和跳跃I的问题区别就在于前者是寻找最短的跳跃次数,而解题的关键就在于每次跳跃的区间内去寻找下一个跳跃的最大区间,直到到达终点,代码的实现呢需要有两个指针,cur指针用来指向当前的跳跃前的位置,next指针用来计算下次跳跃的最大距离(区间内跳的最远的距离)。

复制代码
class Solution {
    public int jump(int[] nums) {
        int cur = 0 , next = 0 , res = 0;
        for (int i = 0; i < nums.length; i++) {
            next = Math.max(next , nums[i] + i);
            if(i == cur){
                if(i < nums.length-1){
                    res++;
                    cur = next;
                    if(cur >= nums.length-1)    break;
                }else break;
            }
        }
        return res;
    }
}

学习时长:2h

总结:这次学习接触了较简单的贪心算法题,对贪心算法有了初步的理解。

相关推荐
做怪小疯子3 分钟前
LeetCode 热题 100——链表——相交链表
算法·leetcode·链表
while(努力):进步1 小时前
5G与物联网:连接万物的数字化未来
leetcode
立志成为大牛的小牛1 小时前
数据结构——五十一、散列表的基本概念(王道408)
开发语言·数据结构·学习·程序人生·算法·散列表
杨福瑞2 小时前
数据结构:双向链表(3)
c语言·数据结构·链表
Coovally AI模型快速验证2 小时前
去噪扩散模型,根本不去噪?何恺明新论文回归「去噪」本质
人工智能·深度学习·算法·机器学习·计算机视觉·数据挖掘·回归
歌_顿2 小时前
attention、transform、bert 复习总结 1
人工智能·算法
MicroTech20252 小时前
MLGO微算法科技时空卷积与双重注意机制驱动的脑信号多任务分类算法
科技·算法·分类
txp玩Linux3 小时前
rk3568上解析webrtc音频降噪算法处理流程
算法·音视频·webrtc
立志成为大牛的小牛3 小时前
数据结构——五十二、散列函数的构造(王道408)
数据结构·笔记·程序人生·考研·算法
2501_941804323 小时前
C++在高性能互联网服务开发与系统优化中的应用与实战经验解析
leetcode