首页 > 编程语言 >Leetcode JAVA刷刷站(55)跳跃游戏

Leetcode JAVA刷刷站(55)跳跃游戏

时间:2024-08-20 15:26:26浏览次数:16  
标签:遍历 false farthest nums 55 位置 JAVA true Leetcode

一、题目概述

二、思路方向

       在Java中,为了解决这个问题,你可以采用贪心算法的思想。贪心算法在这里的应用主要体现在,每一步都尽可能跳得远,以此来判断是否能够到达数组的最后一个下标。

       算法的思路是,遍历数组nums,用一个变量farthest来记录遍历过程中能够到达的最远位置。如果在遍历过程中,farthest的值能够大于等于数组的长度减一(即最后一个下标的索引),那么就可以返回true,表示能够到达最后一个下标。如果在遍历结束时,还没有达到上述条件,则返回false

三、代码实现   

public class Solution {  
    public boolean canJump(int[] nums) {  
        if (nums == null || nums.length == 0) {  
            return false;  
        }  
          
        int farthest = 0; // 能够到达的最远位置  
        for (int i = 0; i < nums.length; i++) {  
            // 如果当前位置已经超过或等于最远位置,那么无法再向前跳了  
            if (i > farthest) {  
                return false;  
            }  
            // 更新能够到达的最远位置  
            farthest = Math.max(farthest, i + nums[i]);  
            // 如果能够到达的最远位置已经包括或超过了最后一个下标,则返回true  
            if (farthest >= nums.length - 1) {  
                return true;  
            }  
        }  
          
        // 如果遍历结束还没有返回true,则默认返回false  
        return false;  
    }  
  
    public static void main(String[] args) {  
        Solution solution = new Solution();  
        int[] nums = {2, 3, 1, 1, 4};  
        System.out.println(solution.canJump(nums)); // 输出 true  
  
        int[] nums2 = {3, 2, 1, 0, 4};  
        System.out.println(solution.canJump(nums2)); // 输出 false  
    }  
}

执行结果: 

四、小结

       在这段代码中,我们使用了farthest变量来记录遍历过程中能够到达的最远位置。对于数组中的每一个位置,我们都检查是否可以通过当前位置跳跃到更远的位置,并更新farthest的值。如果在遍历过程中发现某个位置i已经超过了当前能够到达的最远位置farthest,那么就无法再向前跳了,直接返回false。如果能够到达的最远位置farthest已经包括或超过了最后一个下标,那么就返回true。如果遍历完整个数组都没有返回true,则默认返回false

 结语  

自古以来的伟人

大多是抱着不屈不挠的精神

从逆境中挣扎奋斗过来的

!!!

标签:遍历,false,farthest,nums,55,位置,JAVA,true,Leetcode
From: https://blog.csdn.net/m0_73399576/article/details/141359711

相关文章

  • Java发票查验接口让财务告别低效的工作模式
    Java发票查验接口、发票识别接口说明、发票查验状态码说明翔云发票识别与发票查验接口助力企业财务人员拒绝焦虑,告别抵效。仅需一键上传发票图片,翔云发票识别接口便能快速、精准识别全票面信息,发票查验接口实时联网查验发票的真伪,且可实现发票的批量识别与查验,助力财务人......
  • Java身份证实名认证接口解锁认证新速度
    Java身份证实名制接口示例、身份证识别API、实名制翔云身份证实名认证接口就像一把无形的锁,以快速、自动、精准的身份核验优势代替传统繁琐、耗时的传统实名认证流程,通过验证身份证二要素、三要素的方式确保线上平台用户在虚拟世界里每一次操作的真实可靠,防止信息的泄露与盗用,让......
  • Leetcode面试经典面试题-81.搜索旋转排序数组II
    解法都在代码里,不懂就留言或者私信,这个题目一定要注意重复元素的情况shpublicstaticbooleansearch(int[]nums,inttarget){/**空数组不可能找到任何数*/if(nums==null||nums.length==0){returnfalse;}/**如果......
  • JAVA的数据结构
    JAVA数据结构一、数组(Arrays)可以存储固定大小的相同类型的元素。int[]array=newint[5];优点:随机访问元素效率高缺点:大小固定,插入和删除元素相对较慢二、列表(Lists)1、ArrayListList<String>arrayList=newArrayList<>();特点:动态数组,可变大小优点:高效的随机访......
  • JAVA工厂模式
    概要工厂模式提供了一种创建对象的方法,而无需指定要创建的具体类通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。类型简单工厂模式:简单工厂模式不是一个正式的设计模式,但它是工厂模式的......
  • JAVA集合框架
    JAVA集合框架java集合框架位于java.util包中,所以当使用集合框架的时候需要进行导包一、集合框架设计目标该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。对一个集合的扩展和适应......
  • [Javascript] HTML Template Interpolation
    Thebasic interpolatefunctionwecancreate:functioninterpolate(str,params){letnames=Object.keys(params);//["title","description"]letvalues=Object.values(params);//["Hello","World"]......
  • Java中处理SocketException: Connection reset”异常的方法
    Java中处理SocketException:Connectionreset”异常的方法在Java编程中,有时候我们会遇到java.net.SocketException:Connectionreset异常。这个异常通常表示网络连接被重置或关闭,导致无法继续进行数据传输。在处理这个异常时,有几种常用的方法可以尝试。方法一:检查网络连接首......
  • LeetCode-Python-3154. 到达第 K 级台阶的方案数(DFS + 数学)
    给你有一个 非负 整数 k 。有一个无限长度的台阶,最低 一层编号为0。Alice 有一个整数 jump ,一开始值为0。Alice从台阶1开始,可以使用 任意 次操作,目标是到达第 k 级台阶。假设Alice位于台阶 i ,一次 操作 中,Alice可以:向下走一级到 i-1 ,但该操作......
  • Java计算机毕业设计移动购物管家app(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,智能手机已成为人们日常生活中不可或缺的一部分,极大地改变了人们的消费习惯。传统购物模式逐渐向线上转移,移动购物以其......