博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 45. Jump Game II
阅读量:5245 次
发布时间:2019-06-14

本文共 1152 字,大约阅读时间需要 3 分钟。

 

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Your goal is to reach the last index in the minimum number of jumps.

For example:

Given array A = [2,3,1,1,4]

The minimum number of jumps to reach the last index is 2. (Jump 1 step from index 0 to 1, then 3 steps to the last index.)

Note:

You can assume that you can always reach the last index.

题意:

就当有N块石头吧,在第i块石头上最远可以跳nums[i]块石头,问最少跳多少次可以从第一块石头跳到最后一块。

思路:

目测数据范围很大,要用O(N)的方法。

设far为从0-i的石头上最远可以跳到哪里。

prePos 为在跳ans步的时候,最远可以跳到什么地方。

则当i>prePos时,跳ans步已经跳不到i点了,我们需要++ans,并修改prePos为0~i-1最远可以跳到的地方,我们知道far为之前的点最远可以跳到的位置,这个跳包括跳跃次数为ans+1的和<=ans的,因此跳ans+1步最远可以跳到的位置就是prePos。

 

class Solution {public:    int jump(vector
& nums) { if(nums.size() <= 1) return 0;int far = 0, prePos = 0, ans = 0; for(int i = 0; i < nums.size(); i++){ if( i > prePos){ ans ++; prePos = far; } far = max(far, i + nums[i]); } return ans; }};

 

转载于:https://www.cnblogs.com/bbbbbq/p/7624306.html

你可能感兴趣的文章
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>