(数组 / 字符串) 55. 跳跃游戏 ——【Leetcode每日一题】

2023-09-21 12:49:42

❓ 55. 跳跃游戏

难度:中等

给你一个非负整数数组 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 < = n u m s . l e n g t h < = 1 0 4 1 <= nums.length <= 10^4 1<=nums.length<=104
  • 0 < = n u m s [ i ] < = 1 0 5 0 <= nums[i] <= 10^5 0<=nums[i]<=105

💡思路:直接法

  1. 如果某一个下标作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点
  2. 所以可以对每一个能作为 起跳点 的格子都尝试跳一次,并把 能跳到最远的位置 flag 不断更新;
  3. 如果可以一直跳到最后,就能够到达最后一个下标。

🍁代码:(C++、Java)

C++

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int flag  = 0; // 能跳到的最远位置
        for(int i = 0; i < nums.size(); i++){
            if(i > flag) return false;
            flag = max(flag, i + nums[i]);
        }
        return true;
    }
};

Java

class Solution {
    public boolean canJump(int[] nums) {
        int flag  = 0; // 能跳到的最远位置
        for(int i = 0; i < nums.length; i++){
            if(i > flag) return false;
            flag = Math.max(flag, i + nums[i]);
        }
        return true;
    }
}
🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:
  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。只需要访问 nums 数组一遍,共 n 个位置。
  • 空间复杂度 O ( 1 ) O(1) O(1),不需要额外的空间开销。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!
更多推荐

抖音矩阵系统-60+自媒体平台一键发布-短视频获客系统

当老板做企业的,想在抖音上做生意的,一定一定要开通蓝V企业号线索版来做矩阵。看看我每天的线索都是999+,客服都接待不过来,现在还有300个客资未分配,抖音都在推了企业员工号的玩法,你还在质疑什么?在抖音上做矩阵,真的能将你的生意放大100倍!你只有一个账号,每天就发一条视频,而我们的客户有几百个账号,每天发上千条视频

软件需求文档、设计文档、开发文档、运维文档大全

在软件开发过程中,文档扮演着至关重要的角色。它不仅记录了项目的需求、设计和开发过程,还为项目的维护和管理提供了便利。本文将详细介绍软件开发文档的重要性和作用,以及需求分析、软件设计、开发过程、运维管理和项目管理等方面的文档要求。引言软件开发文档是一种用于记录、沟通和理解软件开发过程的工具。它不仅提供了软件的详细描述,而

从 AI 代码生成模型到 AI 编程助手应用实战

▼最近直播超级多,预约保你有收获近期直播:《从AI编程助手到AIAgent应用实战》随着科技的发展,软件设计方式也在不断地演进,从最初的面向机器,到面向过程,再到面向对象,面向领域,最后到现在快要成为可能的面向自然语言。在软件设计开发领域,我们一直在探索更高效的开发方式—1—AI编程的发展史AI编程的前身,自动代码生成

OJ练习第178题——收集树中金币

收集树中金币力扣链接:2603.收集树中金币题目描述给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处

Linux的Redis集群搭建-主从集群哨兵模式

上次教大家在linux中安装单机版本的redis:Linux安装Redis(图文解说详细版)这次我们讲一下Linux安装redis的集群版本文章目录🌴准备redis环境🌴第一步,下载redis🌴第二步,传输到三台服务器中🌴第三步,解压文件🌴第四步,安装gcc环境🌴第五步,编译🌴第六步,安装🌴主从复制集群

代码随想录算法训练营Day48 (day47休息) | 动态规划(9/17) LeetCode 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

来到了新的一块内容:打家劫舍问题。第一题198.HouseRobberYouareaprofessionalrobberplanningtorobhousesalongastreet.Eachhousehasacertainamountofmoneystashed,theonlyconstraintstoppingyo

S5的未来:即将到来的协议改进和可能性

大家好!在网络通信领域,S5代理协议一直扮演着重要的角色。它的灵活性和功能性使其成为许多应用程序和系统中的首选协议。今天,我将和大家分享关于S5的未来发展,包括即将到来的协议改进和可能性,让我们一起来看看吧!1.协议改进的动力尽管S5在提供代理服务方面表现出色,但仍存在一些限制和改进空间。随着网络技术的不断进步和应用场

TensorFlow框架 -- 入门详解

文章目录引言TensorFlow简介背景特点1.安装和配置1.1安装步骤1.1.1CPU版本1.1.2GPU版本安装:1.2验证安装:2.TensorFlow基础2.1数据类型与结构2.1.1张量(Tensors)2.1.2变量(Variables)2.1.3操作(Operations)2.2计算图(Computati

华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)

目录专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明华为OD机试2023B卷题库疯狂收录中,刷题点这里专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题

Ansys Zemax | 如何建立二向分色分光镜

分光镜(Beamsplitter)可被运用在许多不同的场合。一般而言,入射光抵达二向分色分光镜(dichroicbeamsplitter)时,会根据波长的差异产生穿透或反射的现象。这篇文章将说明如何在OpticStudio的非序列模式(non-sequentialmode)中建立二向分色分光镜,以及如何根据需求自订镀膜

uniapp项目实践总结(十六)自定义下拉刷新组件

导语:在日常的开发过程中,我们经常遇到下拉刷新的场景,很方便的刷新游览的内容,在此我也实现了一个下拉刷新的自定义组件。目录准备工作原理分析组件实现实战演练内置刷新案例展示准备工作在components新建一个q-pull文件夹,并新建一个q-pull.vue的组件;按照前面文章所说的页面结构,编写好预定的自定义下拉刷新

热文推荐