2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版

1.题目描述

2.思路

每次尽可能往远一点跳,就能以最少的步数达到终点。

以最少的步数尽可能的增加覆盖范围,只要覆盖范围把最远的终点覆盖掉,就说明当前的步数可以跳到终点。

每次只记录下一步的最大范围。

3.代码实现

java 复制代码
public class H45 {
    public int jump(int[] nums) {

        if(nums.length==1)//如果只有1一个元素,说明不用跳(既是终点也是起点)
            return 0;
        int cur=0;//当前的覆盖范围的索引,从0开始
        int next=0;//下一步的覆盖范围
        int res=0;//记录当前的结果
        for(int i=0;i<nums.length;i++)
        {
            next=Math.max(i+nums[i],next);//两两比较,每次保存值最大的那个数,并赋值给next
            if(i==cur) {//当前一步的跳跃范围是否已经用完了
                //当前的位置不是数组的终点位置
                if (cur != nums.length - 1)
                {
                    res++;//还没到终点位置,结果(步数)+1
                    //把下一步的覆盖范围赋值给当前的复制范围
                    cur=next;
                    if(cur>nums.length-1)
                        break;
                }else {
                    break;
                }
            }
        }
        return res;


    }
    public static void main(String[] args)
    {
        H45 test=new H45();
        int[] nums={2,3,1,1,4};
        int ans=test.jump(nums);
        System.out.print(ans);
    }
}
相关推荐
互联网全栈架构9 分钟前
遨游Spring AI:第一盘菜Hello World
java·人工智能·后端·spring
qq_429879679 分钟前
省略号和可变参数模板
开发语言·c++·算法
优秀的颜1 小时前
计算机基础知识(第五篇)
java·开发语言·分布式
BillKu1 小时前
Java严格模式withResolverStyle解析日期错误及解决方案
java
CodeWithMe1 小时前
【C/C++】std::vector成员函数清单
开发语言·c++
uyeonashi1 小时前
【QT控件】输入类控件详解
开发语言·c++·qt
网安INF1 小时前
ElGamal加密算法:离散对数难题的安全基石
java·网络安全·密码学
iCxhust2 小时前
Prj10--8088单板机C语言8259测试(1)
c语言·开发语言
AWS官方合作商2 小时前
在CSDN发布AWS Proton解决方案:实现云原生应用的标准化部署
java·云原生·aws
gadiaola3 小时前
【JVM】Java虚拟机(二)——垃圾回收
java·jvm