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

跳跃游戏系列

时间:2023-05-25 20:22:55浏览次数:40  
标签:系列 游戏 nums int 位置 跳跃 return 几格

55. 跳跃游戏

这种方法所依据的核心特性:如果一个位置能够到达,那么这个位置左侧所有位置都能到达。 想到这一点,解法就呼之欲出了~

class Solution {
    public boolean canJump(int[] nums) {

        // 这种方法所依据的核心特性:如果一个位置能够到达,那么这个位置左侧所有位置都能到达。 想到这一点,解法就呼之欲出了~
        if (nums == null) {
            return false;
        }
        //前n-1个元素能够跳到的最远距离
        int k = 0;
        for (int i = 0; i <= k; i++) {
            //第i个元素能够跳到的最远距离
            int temp = i + nums[i];
            //更新最远距离
            k = Math.max(k, temp);
            //如果最远距离已经大于或等于最后一个元素的下标,则说明能跳过去,退出. 减少循环
            if (k >= nums.length - 1) {
                return true;
            }
        }
        //最远距离k不再改变,且没有到末尾元素
        return false;
    }
}
  1. 跳跃游戏 II
class Solution {
    public int jump(int[] nums) {
        // 记录当前能跳跃到的位置的边界下标
        int border = 0;
        // 记录在边界范围内,能跳跃的最远位置的下标
        int maxPosition = 0;
        // 记录所用步数
        int steps = 0;
        for(int i=0;i<nums.length-1;i++){
            // 继续往下遍历,统计边界范围内,哪一格能跳得更远,每走一步就更新一次能跳跃的最远位置下标
            // 其实就是在统计下一步的最优情况
            maxPosition = Math.max(maxPosition,nums[i]+i);
            // 如果到达了边界,那么一定要跳了,下一跳的边界下标就是之前统计的最优情况maxPosition,并且步数加1
            if(i==border){
                border = maxPosition;
                steps++;
            }
        }
        return steps;
    }
}

核心思想:就是只有不得不跳的时候,才会跳。对steps++;
1.当前最远能跳几格不一定就跳几格 2.往后一段比较,后面的能跳更远就跳到后面那格,没有更远的就从当前格起跳 3.每一段都是局部最远的几格跳,加起来就是最少的跳跃次数。

标签:系列,游戏,nums,int,位置,跳跃,return,几格
From: https://www.cnblogs.com/chenyi502/p/17432746.html

相关文章

  • 游戏逆向-D3D9绘制
    做游戏逆向期间通常会用到绘制技术,比如FPS游戏逆向矩形透视,骨骼等。接下来几章内容主要介绍几种比较常见的绘制技术:如D3Dx绘制,Imgui绘制,D3D9HOOK绘制,DWM绘制 GDI绘制与D3Dx绘制的区别通用性的区别:1、GDI渲染方式则是我们熟知的采用GDI进行图像绘制,其优势就是通用性强,只要是目......
  • Qt系统学习系列目录:订阅必看
    文章目录前言:必看文章目录一.按钮类1.1QAbstractButton(已写)1.2QPushButton(已写)1.2QToolButton(已写)1.3RadioButton1.4CheckBox1.5CommandLinkButton1.6ButtonBox二.单元视图2.1ListView2.2TreeView2.3TableView2.4ColummView三.单元组件3.1ListWidget3.2TreeWidget3......
  • Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。
    文章目录一.前言1.基础布局2.自动切换图片3.添加内容4.自动缩放,控件的显示和隐藏5.响应用户输入操作所有文章源码已整体打包上传至github,求星星!一.前言两年的大学生活马上就要结束了,马上面临实习,突然心血来潮,想着最后再来写一个项目来总结这几年所学的东西,难的项目,咱也不会,索......
  • Fdog系列(六):利用Qt通过服务端进行客户端与客户端通信(资料少,建议收藏)
    文章目录一.前言二.正文1.客户端与客户端通信思路2.代码实现(1)服务端的实现(2)客户端的实现一.前言Fdog已写文章目录:Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。Fdog系列(三):使用腾讯云短信接口发......
  • Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
    文章目录1.前言2.使用腾讯云短信接口发送短信3.java连接数据库4.部署到服务器(如果你有的话)目录Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。文章中出现的源码获取方式:评论区留下邮箱地址。创作......
  • Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。
    文章目录1.前言2.创建javaweb项目3.创建Server4.解决中文乱码问题5.响应后台数据目录Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。所有文章源码已整体打包上传至github,求星星!1.前言接着第一篇用html完成了注册页面,第二篇,我们来完成后台数据处理,需要用......
  • LINUX系列-命令篇
    1find命令-name名称查找-size大小查找-type类型查找f:普通文件d:目录文件l:链接文件b:块设备文件c:字符设备文件p:管道文件s:socket文件-user属性查找-iname忽略大小写查找-[cam]time(create/access/modify)时间查找-maxdepth深度查找-exec执行动作#......
  • < Python全景系列-7 > 提升Python编程效率:模块与包全面解读
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。Python全景系列的第七篇,本文将深入探讨Python......
  • python系列教程209——复杂的lambda语句
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • < Python全景系列-7 > 提升Python编程效率:模块与包全面解读
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。Python全景系列的第七篇,本文将深入探讨Python......