leetcode第55题

简介: 当自己按照 45 题的思路写完的时候,看 Solution 的时候都懵逼了,这道题竟然这么复杂?不过 Solution 把问题抽象成动态规划的思想,以及优化的过程还是非常值得学习的。

image.png

45题的时候已经见过这道题了,只不过之前是返回从第 0 个位置能跳到最后一个位置的最小步数,这道题是返回是否能跳过去。

leetCode Solution 中给出的是动态规划的解法,进行了一步一步的优化,但都也比较慢。不过,思路还是值得参考的,上边说的比较详细,这里就不啰嗦了。这里,由于受到 45 题的影响,自己对 45 题的解法改写了一下,从而解决了这个问题。

下边的解法都是基于45题 的想法,大家可以先过去看一下,懂了之后再回到下边来看。

解法一 顺藤摸瓜

45 题的代码。

publicintjump(int[] nums) {
intend=0;
intmaxPosition=0; 
intsteps=0;
for(inti=0; i<nums.length-1; i++){
//找能跳的最远的maxPosition=Math.max(maxPosition, nums[i] +i); 
if( i==end){ //遇到边界,就更新边界,并且步数加一end=maxPosition;
steps++;
        }
    }
returnsteps;
}

这里的话,我们完全可以把 step 去掉,并且考虑下当前更新的 i 是不是已经超过了边界。

publicbooleancanJump(int[] nums) { 
intend=0;
intmaxPosition=0;  
for(inti=0; i<nums.length-1; i++){
//当前更新超过了边界,那么意味着出现了 0 ,直接返回 falseif(end<i){
returnfalse;
        }
//找能跳的最远的 maxPosition=Math.max(maxPosition, nums[i] +i); 
if( i==end){ //遇到边界,就更新边界,并且步数加一end=maxPosition; 
        }
    }
//最远的距离是否到答末尾returnmaxPosition>=nums.length-1;
}

时间复杂度:O(n)。

空间复杂度:O(1)。

当自己按照 45 题的思路写完的时候,看 Solution 的时候都懵逼了,这道题竟然这么复杂?不过 Solution 把问题抽象成动态规划的思想,以及优化的过程还是非常值得学习的。


相关文章
N..
|
前端开发 JavaScript 开发者
HTML框架
HTML框架
N..
221 1
解决Vscode使用LeetCode报错Failed to test the solution. Please open the output channel for details.
本文提供了解决在VScode中使用LeetCode插件时遇到“Failed to test the solution. Please open the output channel for details.”错误的方法,主要是通过修改setting.json文件中的输出文件夹配置来解决。
1408 1
|
人工智能
写歌词的技巧和方法:打造完美歌词结构,妙笔生词AI智能写歌词软件
写歌词的技巧包括:开头吸引人,主体逻辑清晰,结尾画龙点睛。使用《妙笔生词智能写歌词软件》的AI功能,如智能写词、押韵优化等,可助你克服创作瓶颈,打造完美歌词结构,适用于民谣、摇滚、流行等多种风格。
|
安全
跨域
跨域问题在Web开发中较为常见,开发人员需要根据具体的项目需求和场景选择合适的跨域解决方案。在实际应用中,CORS和代理服务器是比较常用的方法,而JSONP和WebSockets则适用于一些特定的业务场景。
370 49
|
JavaScript 前端开发 API
【独家揭秘】如何从零开始,用Vue.js打造你的专属电商平台?
【8月更文挑战第30天】本教程将指导你使用Vue.js及其生态,包括Element UI,从零开始构建一个具备首页、商品列表、详情页、购物车及登录注册功能的基础电商平台前端。通过实践,你不仅将学会构建完整的Web应用,还将掌握Vue.js的高级特性和多种实用插件的使用方法,逐步提升应用的功能并优化用户体验。
422 0
|
Java 程序员 PHP
01 入门PHP就来我这-安装phpstudy
路老师的PHP入门教程,带你从零开始学习PHP。首先下载并安装phpStudy,接着配置域名和端口,最后创建并运行第一个PHP文件。内容详实,适合初学者。
266 3
01 入门PHP就来我这-安装phpstudy
|
JavaScript Apache CDN
Vue项目使用ECharts实现图表
Vue项目使用ECharts实现图表
419 0
|
分布式计算 Java 数据处理
Apache Spark优缺点大揭秘
【10月更文挑战第12天】
493 11
|
存储 Shell Android开发
【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
857 0
【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )