【LeetCode 面试经典150题】55. Jump Game 跳跃游戏

2024-01-03 13:52

本文主要是介绍【LeetCode 面试经典150题】55. Jump Game 跳跃游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

55. Jump Game

题目大意

You are given an integer array nums. You are initially positioned at the array’s first index, and each element in the array represents your maximum jump length at that position.

Return true if you can reach the last index, or false otherwise.

中文释义

给定一个整数数组 nums。你最初位于数组的第一个索引处,数组中的每个元素代表你在该位置的最大跳跃长度。

如果你能到达最后一个索引,则返回 true;否则返回 false。

Example

Example 1:

  • Input: nums = [2,3,1,1,4]
  • Output: true
  • Explanation: 从索引0跳1步到索引1,然后跳3步到最后一个索引。

Example 2:

  • Input: nums = [3,2,1,0,4]
  • Output: false
  • Explanation: 无论如何,你总会到达索引3。该索引的最大跳跃长度为0,使得无法到达最后一个索引。

Constraints

  • 1 <= nums.length <= 10^4
  • 0 <= nums[i] <= 10^5

解题思路

算法描述

此代码实现了判断是否能从数组的第一个索引跳跃到最后一个索引的功能。

max_reach 记录当下能够到达的最远距离,在遍历的过程中,不断更新能够到达的最远距离max_reach,直到能够到达最后一个位置。

算法的主要步骤如下:

  1. 初始化变量:

    • max_reach: 用于存储目前能够到达的最远索引,初始设置为0。
  2. 遍历数组:

    • 从数组的开始遍历,直到 i 达到 max_reach 或超过它。
    • 在每一步中,更新 max_reach 为当前索引 ii + nums[i](即当前位置能跳到的最远索引)的较大值。
    • 如果在任何时候 max_reach 大于或等于数组的最后一个索引(nums.size() - 1),则表示可以跳到最后一个索引,返回 true
  3. 返回结果:

    • 如果遍历结束后没有能够到达最后一个索引,则返回 false

代码示例

class Solution {
public:bool canJump(vector<int>& nums) {int max_reach = 0;for (int i = 0; i <= max_reach; i++) {max_reach = max(max_reach, i + nums[i]);if (max_reach >= nums.size() - 1) {return true;}}return false;}
};

这篇关于【LeetCode 面试经典150题】55. Jump Game 跳跃游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565913

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

fzu 2275 Game KMP

Problem 2275 Game Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description Alice and Bob is playing a game. Each of them has a number. Alice’s number is A, and Bob’s number i