45. 跳跃游戏2

news/2025/1/15 19:55:59/

题目

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

0 <= j <= nums[i]
i + j < n
返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

C++

class Solution {
public:int j(vector<int>& nums,int index,int count) {//printf("index:%d  count:%d.",index,count);if(index==nums.size()-1){return count;}if((index+nums[index])>=nums.size()){return count+1;}else{int len=nums[index];int n=INT_MAX;for( int i=len;i>0;i-- ){int c=count;int temp_count=j(nums,index+i,++c);n=min(n,temp_count);}//printf("over \n");return n;}}int jump(vector<int>& nums) {return j(nums,0,0);}
};
class Solution {
public:int jump(vector<int>& nums) {int steps=0;int end=0;int distance=0;for( int i=0;i<nums.size()-1;i++ ){distance=max(distance,nums[i]+i);if( i==end ){end=distance;steps++;}}return steps;}
};

时间复杂度

O ( N ) O(N) O(N)

空间复杂度

O ( 1 ) O(1) O(1)

Java

class Solution {public int jump(int[] nums) {int steps=0;int end=0;int distance=0;for( int i=0;i<nums.length-1;i++ ){distance=Math.max(distance,i+nums[i]);if( i==end ){end=distance;steps++;}}return steps;}
}

时间复杂度

O ( N ) O(N) O(N)

空间复杂度

O ( 1 ) O(1) O(1)

Python

class Solution:def jump(self, nums: List[int]) -> int:steps=0;end=0;distance=0;for i in range(len(nums)-1):distance=max(distance,i+nums[i]);if i==end:end=distance;steps=steps+1;return steps;

时间复杂度

O ( N ) O(N) O(N)

空间复杂度

O ( 1 ) O(1) O(1)


http://www.ppmy.cn/news/1563413.html

相关文章

LeetCode | 图文详细描述动态规划DP算法及经典题型

本文将用简单直白的方式&#xff0c;从零开始带你掌握动态规划的精髓。你会发现&#xff1a; 动态规划其实没那么难——它就是递归的“记性”版。状态转移方程不再玄学——从题目思路到实现&#xff0c;手把手教你推导。经典题型剖析——从“爬楼梯”到“背包问题”&#xff0…

web.xml常用配置

web.xml是Java Web应用程序的部署描述文件&#xff0c;它位于WEB-INF目录下。web.xml文件主要用于配置Servlet、Filter、Listener、MIME类型、欢迎页面等组件&#xff0c;以及一些Web应用的上下文参数。以下是一些常见的web.xml配置说明&#xff1a; Servlet配置&#xff1a; …

如何将json字符串格式化

文章目录 如何对json字符串进行格式化显示hutool方案的示例和不足使用fastjson的方案 如何对json字符串进行格式化显示 将json字符串内容进行格式化的输出显示。本文介绍 hutool的方案和alibaba 的fastjson方案 hutool方案的示例和不足 引入依赖 <dependency><grou…

【SVN】版本发布快捷操作

摘要&#xff1a;因为每次发版都需要制作一份相同的文件夹&#xff0c;而大部分的包都不需要变更&#xff0c;但是文件又非常大&#xff0c;记录自己的操作经验。 首先在SVN Repository Browser 界面把上一次的版本复制一份&#xff0c;复制的时候重命名为新的版本号 右击要复…

Win11远程桌面怎么设置?

通过Windows自带的远程桌面功能&#xff0c;可以轻松的远程访问另一台电脑。不过&#xff0c;在使用这一功能之前&#xff0c;需要先进行相关的设置。那么&#xff0c;Win11远程桌面怎么设置&#xff1f;接下来&#xff0c;我们将为您提供详细的Win11远程桌面设置步骤。 步骤 …

【51项目】51单片机自制小霸王游戏机

视频演示效果: 纳新作品——小霸王游戏机 目录: 目录 视频演示效果: 目录: 前言:

【C语言】字符串函数详解

文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现&#xff08…

网络安全的学习路径 (包括资源)快速学习

网络安全是一个多学科领域&#xff0c;涉及到技术、管理和法律等方面的知识。以下是详细的网络安全学习路径&#xff0c;从入门到高级&#xff0c;为你提供清晰的学习方向。 第一阶段&#xff1a;入门基础 在这阶段&#xff0c;你需要掌握基础的计算机知识和网络安全的基本概念…