首页 > 其他分享 >跳跃游戏

跳跃游戏

时间:2023-11-30 17:25:02浏览次数:23  
标签:下标 游戏 nums int 跳跃 false true

跳跃游戏

难度 : 简单 | 中等 | 困难 ------------------- 用时:36分钟(第一次) ------------------- 作题日期:2023-11-30
ps: 本人理解有限,以下是自我理解,官方和大佬有更完整和详细的解析!!!

题目描述

  • 题目描述
    给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
    判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。
    
  • 案例演示
    示例 1:
    
        输入:nums = [2,3,1,1,4]
        输出:true
        解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
    示例 2:
    
        输入:nums = [3,2,1,0,4]
        输出:false
        解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
    
  • 提示
    1 <= nums.length <= 10^4
    0 <= nums[i] <= 10^5
    

代码及解析

第一次想法:递归暴力(已超时)

预料之内,刚开始第一次读题时,看到实例的时候,第一反应是它可以跳跃 0~nums[i] 步脑子一热就想到递归暴力求解,每次去遍历一步,看它是否能到终点,到终点返回true,否则,返回false,不出意外的超时了

public static boolean canJump(int[] nums) {
        return isfa(nums, 0);
    }
    public static boolean isfa(int[] nums,int from){
        if(from+1 == nums.length){
            return true;
        }else{
            boolean k  = false ;
            for(int i = 1 ; i<=nums[from];i++){
                k = isfa(nums, from+i);
                if (k) {
                    break;
                }
            }
            if(k){
                return true;
            }else{
                return false;
            }
        }
    }

第二次想法:贪心

利用max去维护可以跳跃最大的距离,每次循环判断i是否在max这个范围中,如果不在则跳过,同时还要判断max是否大于等于数组的长度,如果是说明可以跳到的最大范围超过数组一定可以到达则返回true,否则返回false。
示例

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

标签:下标,游戏,nums,int,跳跃,false,true
From: https://www.cnblogs.com/kckte66/p/17867823.html

相关文章

  • 基于Python的BlackJack游戏项目设计与实现——LW
    本篇论文介绍了基于Python的Blackjack游戏的设计和实现。该游戏是一款经典的赌博游戏,玩家可以在游戏中与电脑进行对战。在系统设计方面,本文首先对需求进行了分析,并采用了面向对象的方法进行了系统的设计。在客户端模块设计中,使用了Pygame库进行图形界面的实现,同时采用了多线程技术......
  • 游戏中模型动画的几种实现方式
    游戏内动画的实现方式一般有这几种:骨骼动画顶点动画材质动画CPU蒙皮动画骨骼动画骨骼动画是一种基于骨骼系统的动画技术,它通过对骨骼进行变换来控制模型的姿态和动作。在骨骼动画中,模型通常被分解成多个部分,每个部分都与一个或多个骨骼相连,通过对骨骼进行旋转、平移、缩放等变换,可......
  • 多开工具对网络游戏安全性的评估与加固
    多开工具对网络游戏安全性的评估与加固随着网络游戏的普及和发展,一些玩家为了方便或者获得不正当利益,开始使用多开工具同时登录多个游戏账号。然而,多开工具的使用可能会对网络游戏的安全性造成一定的威胁,因此有必要对其进行评估并采取相应的加固措施。首先,对于多开工具的评估需要......
  • 《游戏编程模式》笔记
    地址:https://gpp.tkchu.me/前言本文无参考价值,主要记录博主在学习本书时,觉得有用的东西不代表这些知识对你有用,也不代表没记录的东西对你没用,想学习请看上面的原文。设计模式状态机有限状态机层次状态机:部分状态可以通过继承,来处理通用的状态。比如在地面上按B,和在空中按B......
  • 简直不能相信!这款IDE仅插件10秒写出飞机大战游戏,太神奇了!
    一、写在前面昨天分享了一款可以帮我们写代码的插件CodeGeex,其实能帮我们解决大部分问题,讲道理已经很好了对不对?but,他就是最好的插件吗?肯定不是,这不又让我又发现了一款可以平替的插件TONGYILingma(阿里云出品智能编码助手通义灵码)。可能有同学会问了,那六哥这两个插件选哪个更好些呢......
  • AcwSpringbootke3--2,游戏界面下
    1进入同一个格子就会平局下面就要防止g[this.rows-1-r][this.cols-1-c]......
  • 2048 ,Android 休闲益智游戏开发
    A.项目描述《2048》是一款经典的益智小游戏,它的目标是通过合并相同数字来达到2048这个最高分。该游戏规则简单,玩家需要通过滑动屏幕来移动方块,相同数字的方块会合并成一个新的数字方块。这样的简单操作让人可以轻松上手。《2048》小游戏app的技术原理主要涉及游戏逻辑、用户界面和......
  • 猜数字游戏--python可把过程记录入文档
    defcaishuzi_game(x,y):importrandomx=int(random.randint(x,y))a=0try:b=int(input("请输入你要猜的数字"))except:print("输入类型错误,请重新输入整数型类型数字")b=int(input("请输入你要猜的数字"))whilea<5......
  • 微信小游戏开发怎么选游戏引擎
    微信小游戏现在非常的火,当我们下定决心做微信小游戏开发的时候,面临我们的第一个问题是怎么选一个H5的游戏引擎,那么今天本小编就来给大家分析一下目前能开发各大平台H5小游戏的游戏引擎和它们的优缺点。入选原则:(1)能一次开发,同时发布到多个游戏平台的游戏引擎;(android,IOS,......
  • 2022年十三届B组----试题F:消除游戏
    目录题目法一、切片法二、双向链表题目法一、切片s=list(input())j=0whilej<2**64:#题目要求的操作次数pos=set()#集合特性(去重)foriinrange(1,len(s)-1):ifs[i]==s[i-1]ands[i]!=s[i+1]:pos.add(i)#需要删除的......