力扣面试经典算法150题:跳跃游戏 II

server/2024/10/18 14:26:48/

跳跃游戏 II

今天的题目是力扣面试经典150题中的数组的中等难度题:跳跃游戏II。

题目链接:https://leetcode.cn/problems/jump-game-ii/description/?envType=study-plan-v2&envId=top-interview-150

题目描述

给定一个非负整数数组 nums,你最初位于数组的第一个位置。每个元素代表你在该位置可以跳跃的最大长度。你的目标是从数组的起始位置到达最后一个位置。求出到达最后一个位置所需的最少跳跃次数。

  • 示例
    • 输入:
      nums = [2,3,1,1,4]
    • 输出:
      2
  • 示例 :
    • 输入:
      nums = [2,3,0,1,4]
    • 输出:
      2

题目分析

昨天刚做完跳跃游戏的题目,昨天的题目只需要返回能否到终点即可,今天题目难度高一点,我们需要返回最少的次数,但是这个游戏的本质还是一样的。

解题思路

这个题目闭眼贪心算法,昨天刚解完,今天总不能忘了吧。

  1. 初始化三个变量:step 表示当前步数,maxReach 表示当前可以达到的最远位置,end 表示上一步可以达到的最远位置。
  2. 遍历数组,更新 maxReach。
  3. 当遍历到 end 时,增加步数,并更新 end 为新的 maxReach。
  4. 继续遍历直到结束。

实际算法代码

以下是使用上述思路的 Java 实现:

java">public class Solution {public static void main(String[] args) {Solution solution = new Solution();int[] nums = {2, 3, 1, 1, 4};int minJumps = solution.jump(nums);System.out.println("Minimum jumps: " + minJumps);}public int jump(int[] nums) {int step = 0;int maxReach = 0;int end = 0;for (int i = 0; i < nums.length - 1; i++) {maxReach = Math.max(maxReach, i + nums[i]);if (i == end) {step++;end = maxReach;if (end >= nums.length - 1) break;}}return step;}
}

可以看到,实际计算的代码比昨天也没多什么东西,就一个计算结果的步数,到结尾返回。只要题目理解的没问题,熟练使用贪心算法,解答还是很简单的。

结果

运行代码,测试通过:
在这里插入图片描述

提交到力扣,也正常通过:

在这里插入图片描述

总结

又是使用贪心算法的一天,已经连着解了好几个题了。

其实主要还是理解题目,掌握规律,使用恰当的代码编写,从暴力解法慢慢过渡到优秀解法,算法之力就是这么积累的。

加油!!!


http://www.ppmy.cn/server/104422.html

相关文章

ZooKeeper入门及核心知识点整理

什么是Zookeeper Zookeeper简称zk&#xff0c;先从字面意思上去理解&#xff0c;那就是动物园管理员。其实zk是大数据领域中的一员&#xff0c;为整个分布式环境提供了协调服务&#xff0c;主要可以用于存储一些配置信息&#xff0c;同时也可以基于zk实现集群。它是一个apache…

基本数据类型 --- 浮点型

float的机器码表示&#xff1a; 一个float数据 (pow(-1, sign) fraction) * pow(2, exponent - 127) 由上图&#xff0c;可得&#xff1a; (pow(-1, sign) fraction) * pow(2, exponent - 127) ( 1 2^(-2) ) * pow(2, 124-127) 0.15625 其他文章&#xff1a; https://b…

React 入门第三天:深入理解Hooks的强大功能

在React学习的第三天&#xff0c;我将重点放在Hooks上。Hooks是React 16.8引入的一项革命性特性&#xff0c;使得我们能够在函数组件中使用状态和其他React特性。通过学习和实践Hooks&#xff0c;我进一步体会到了React的灵活性和强大之处。以下是我第三天的学习心得。 1. Hoo…

gitignore忽略某些格式文件

要忽略某些格式文件&#xff0c;比如所有log文件&#xff0c;可以在.gitignore文件中添加对应的规则。具体操作如下&#xff1a; 打开项目中的.gitignore文件&#xff08;如果不存在&#xff0c;可以手动创建一个&#xff09;&#xff0c;在文件中逐行添加规则。 在.gitignore…

iPhone 16系列详细参数曝光

根据海外媒体的最新汇总&#xff0c;iPhone 16系列的详细配置和价格已经曝光&#xff0c;其中标准版iPhone依然延续60Hz屏幕&#xff0c;成为众多果粉关注的热点。 据悉&#xff0c;iPhone 16将搭载6.1英寸的60Hz屏幕&#xff0c;内置苹果最新的A18芯片&#xff0c;并支持Apple…

SpringBoot3:轻松使用Jasypt实现配置文件信息加密

文章目录 前言一、概述1.1 Jasypt库简介1.2 Jasypt库的主要特点 二、开发环境三、Jasypt集成到SpringBoot33.1 引入依赖3.2 配置Jasypt3.3 加密配置文件信息3.3.1 方案一&#xff08;不推荐&#xff09;a.编写测试类生成加密后的配置文件信息b.运行c.修改原本的配置文件信息 3.…

响应式 Web 设计:纯 HTML 和 CSS 的实现技巧

响应式 Web 设计&#xff1a;纯 HTML 和 CSS 的实现技巧 引言 随着移动设备的普及&#xff0c;响应式 Web 设计&#xff08;Responsive Web Design, RWD&#xff09;已成为现代网页开发的标准。响应式设计的目标是使网页在不同设备上&#xff08;如手机、平板和桌面&#xff…

MySQL 数据库知识总结

一、数据库概述 定义与特点&#xff1a; MySQL 是一种开源的关系型数据库管理系统&#xff0c;以其高性能、可靠性和易用性而闻名。支持多用户、多线程操作&#xff0c;适用于各种规模的应用场景。提供丰富的数据类型和强大的查询语言&#xff08;SQL&#xff09;。 架构组成&a…