leetcode(hot100)——贪心算法

55. 跳跃游戏

        本题不用纠结于可以跳几步,可以聚焦于覆盖范围,即 当前位置+当前跳数 能够覆盖的范围,若这个范围足以到达最后一个位置,则返回true;若for循环结束,则还没返回true,则返回false。 下面看代码:

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

因为cover是覆盖范围,所以for循环的终止条件是i<=cover,最后一个位置是可以取到的。

45. 跳跃游戏 II 

        本题为 跳跃游戏I 的升级版,保证可以到达终点的情况下,要求出最短的跳跃次数。

        还是仿照 跳跃游戏I 的思路,定义一个cover 用于记录最大覆盖范围,终止条件是:        cover >= nums.size()-1  ,还要定义一个变量 largest 用于记录当前最远覆盖范围的下标,当i遍历到 largest 时,就要开始新的一步,即ans++。

class Solution {
    public int jump(int[] nums) {
        if(nums.length == 1) return 0;
        int cover = 0;
        int ans = 0;
        int largest = 0;
        for(int i=0; i<nums.length; i++){
            cover = Math.max(cover , nums[i]+i);//最大覆盖范围
            if(cover >= nums.length-1){ //终止条件
                return ans+1;
            }
            if(largest == i){ //需要开始新的一步
                ans++;
                largest = cover;
            }
        }
        return ans+1;
    }
}

455. 分发饼干

        优先将大饼干喂给胃口大的,尽可能先把大胃口的孩子满足,此时for循环需要遍历胃口。 下面看代码:

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        int ans = 0;
        int j = s.length-1;
        Arrays.sort(g);
        Arrays.sort(s);
        for(int i=g.length-1; i>=0; i--){
            //没有越界 且 饼干尺寸大于胃口
            if(j>=0 && s[j]>=g[i]){
                ans++;
                j--;
            }
        }
        return ans;
    }
}

相关推荐

  1. LeetCodehot100

    2024-04-23 13:52:01       38 阅读
  2. 【Leetcode】top 100 贪心算法

    2024-04-23 13:52:01       13 阅读
  3. LeetCode算法练习top100:(10贪心算法

    2024-04-23 13:52:01       29 阅读
  4. 一个月速刷leetcodeHOT100 day02

    2024-04-23 13:52:01       16 阅读
  5. 一个月速刷leetcodeHOT100 day 01

    2024-04-23 13:52:01       43 阅读
  6. 一个月速刷leetcodeHOT100 day03

    2024-04-23 13:52:01       11 阅读
  7. 贪心算法03(leetcode1005,134,135)

    2024-04-23 13:52:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 13:52:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 13:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 13:52:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 13:52:01       20 阅读

热门阅读

  1. 【React Router】快速使用

    2024-04-23 13:52:01       14 阅读
  2. spring中的Aware接口概念

    2024-04-23 13:52:01       13 阅读
  3. 8.Godot 函数|变量|运算符|条件循环语句

    2024-04-23 13:52:01       15 阅读
  4. python机器学习库中Scikit-learn和TensorFlow如何选择?

    2024-04-23 13:52:01       13 阅读
  5. 【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

    2024-04-23 13:52:01       16 阅读
  6. SQL中不等于的写法

    2024-04-23 13:52:01       13 阅读
  7. Linux文件/目录高级管理一 头歌

    2024-04-23 13:52:01       14 阅读
  8. 智能合约区块应用链交易所系统教程开发搭建

    2024-04-23 13:52:01       14 阅读
  9. 笔记:Python 循环结构练习题

    2024-04-23 13:52:01       13 阅读
  10. 实验3 7段数码管译码器动态显示

    2024-04-23 13:52:01       12 阅读
  11. yolov8下实现绿萝识别

    2024-04-23 13:52:01       23 阅读
  12. 【代码随想录】day44

    2024-04-23 13:52:01       45 阅读
  13. oracle--存储过程基本框架

    2024-04-23 13:52:01       38 阅读
  14. 富格林:善用正规要领杜绝受害

    2024-04-23 13:52:01       35 阅读
  15. 嵌入式学习——C语言基础——day6

    2024-04-23 13:52:01       12 阅读
  16. 2024.4.22每日一题

    2024-04-23 13:52:01       15 阅读
  17. RedisSearch:一个基于Redis的搜索引擎模块

    2024-04-23 13:52:01       54 阅读
  18. VScode 里面使用 python 去直接调用 CUDA

    2024-04-23 13:52:01       19 阅读