原题目:

跳跃游戏 II

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

示例:

输入: [2,3,1,1,4]
输出: 2

解释: 跳到最后一个位置的最小跳跃数是 2。

从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

说明:

假设你总是可以到达数组的最后一个位置。

解法:

这道题希望用最少的次数完成跳跃,符合贪心的思维:局部最优,不可取消

我们选择当前能选择的走的最远的路径

具体实现

遍历数组,在遍历过程中,

使用一个变量表示当前能一步走到的最远点

使用一个变量记录当前步骤中,下一步能最远到达的点

使用一个变量表示当前走的步数

首先规定程序如何“选择”出了最远的步

我们在遍历数组的过程中,记录了当前步骤能一步到达的最远的点

无论我们在这个步骤中选择下一步走哪个,我们在循环到当前能一步走到的最远点时,我们一定能得到:走完了一步下一步能一步到达的最远点

如此遍历完数组,就得到了答案

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

最新文章

  1. jQuery.Ajax IE8 无效(CORS)
  2. 使用Apache Server 的ab进行web请求压力测试
  3. ElasticSearch学习记录
  4. How to Make Terrains in Tiled Map Editor
  5. Linux(Ubuntu)下面SecureCRT 完全破解
  6. 腾讯即时聊天sdk
  7. (转)log4net的配置详解
  8. mongo的insert和save比较
  9. 绘制3D的托卡马克位形图的matlab脚本文件 ThreeD.m
  10. ggplot2 坐标系相关设置(coord)
  11. 用Visual Studio2017写静态库
  12. Java IO(一):IO和File
  13. 从零开始学习前端JAVASCRIPT — 4、JavaScript基础Math和Date对象的介绍
  14. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(三)
  15. Codeforces1076E. Vasya and a Tree(dfs+离线+动态维护前缀和)
  16. 在浏览器中输入 www.baidu.com 后执行的全部过程
  17. 如何利用 jQuery 修改 css 中带有 !important 的样式属性?
  18. 《TCP/IP详解卷1:协议》读书笔记
  19. EasyUI相同的Tab只打开一个(即EasyUI方法的调用方法)
  20. 递增和递减进度条CCProgressTimer

热门文章

  1. 还在使用集合类完成这些功能?不妨来看看 Guava 集合类!!!
  2. 玩转 .NET Core 3.0:逐浪CMS新版发布,建站更简单、网站更安全
  3. web安全测试--环境搭建
  4. MyISAM 和 InnoDB
  5. ggplot2(10) 减少重复性工作
  6. drf分页功能
  7. 五分钟学Java:如何学习Java面试必考的JVM虚拟机
  8. 浅析Redis分布式锁---从自己实现到Redisson的实现
  9. MySQL数据备份及还原(一)
  10. 杂谈 | 增量思维v.s.存量思维