leetcode-55 Jump Game 最远距离问题
2015-12-02 20:28
465 查看
问题描述:
Given an array ofnon-negative integers, you are initially positioned at the first index of thearray.
Each element in the arrayrepresents your maximum jump length at that position.
Determine if you are ableto reach the last index.
For example:
A =
A =
问题分析:
如:[3, 1, 2, 4, 0 ,1]
遍历数组,使用一个变量reach来记录数组所能达到的最远距离位置;
对于每一个位置,其可能达到的最远位置为i+nums[i];
因此,每走一步,只取最终最远的距离,如果前面能走到的距离比当前位置i所能到达的位置更远,则取前面的reach;如果i所能达到的最远距离比reach要远,则取i所能覆盖的距离为最新的reach;
不可达情况,即为走到的i位置,reach范围也就是前面所能达到的最远距离并未覆盖到i点,则表示不可达;这个一般发生在nums[i]=0的情况。
代码:
public class Solution {
public boolean canJump(int[] nums) {
int i = 0;
int n = nums.length;
for (int reach = 0; i < n && i <= reach; ++i)
reach = Math.max(i + nums[i], reach);
return i == n;
}
}
Given an array ofnon-negative integers, you are initially positioned at the first index of thearray.
Each element in the arrayrepresents your maximum jump length at that position.
Determine if you are ableto reach the last index.
For example:
A =
[2,3,1,1,4], return
true.
A =
[3,2,1,0,4], return
false.
问题分析:
如:[3, 1, 2, 4, 0 ,1]
遍历数组,使用一个变量reach来记录数组所能达到的最远距离位置;
对于每一个位置,其可能达到的最远位置为i+nums[i];
因此,每走一步,只取最终最远的距离,如果前面能走到的距离比当前位置i所能到达的位置更远,则取前面的reach;如果i所能达到的最远距离比reach要远,则取i所能覆盖的距离为最新的reach;
不可达情况,即为走到的i位置,reach范围也就是前面所能达到的最远距离并未覆盖到i点,则表示不可达;这个一般发生在nums[i]=0的情况。
代码:
public class Solution {
public boolean canJump(int[] nums) {
int i = 0;
int n = nums.length;
for (int reach = 0; i < n && i <= reach; ++i)
reach = Math.max(i + nums[i], reach);
return i == n;
}
}
相关文章推荐
- 天津占座
- CodeForces 602C__The Two Routes
- 商务通传递中文及样式
- UI基础整理-7
- 哔哩哔哩真实视频地址解析-初探
- Mysql记录集锦
- 多空对比:一个实用的短中长期资金观察指标介绍
- 网络协议学习笔记-数据链路层-MTU、路径MTU和串行线路吞吐量计算
- Linux里类似批处理中的pause命令
- (十三)break 命令
- MFC中定时器的使用
- 【HDU 2037】今年暑假不AC
- asp.net获取客户端浏览器及主机信息
- 上线发布系统
- 模拟面试
- Session Storage、Cache Storage
- Android应用程序的打包,安装,启动
- Azure平台管理员必须了解的安全问题
- 【openjudge】最大上升子序列和
- (boost::format)io_service和io_service::work的基础使用