题目简介
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
示例:
1 | 输入: [2,3,1,1,4] |
思路:首先定义一个far来表示在遍历元素的过程中(遍历至每次跳跃的终点end前),所能达到的最远的距离,即为下次跳跃的end。每次到达end以后,即一次跳跃结束,更新end后进行下一次的跳跃。
如示例中[2,3,1,1,4], 第一次跳跃从nums[0] = 2开始,所能到达的最远的点为num[2] = 1(第一次的end),即这次跳跃有两个选择(num[1] = 3 和 nums[2] = 1),那么我们在遍历这两个点的时候,可以算出在num[1] = 3这个点,所能到达的距离是最远的,可以到达num[4] = 4,所以我们在第一次跳跃结束时(也就是到达了nums[2] = 1这个点),更新end为nums[4] = 4这个点,并开始第二次跳跃。
代码如下:
1 | class Solution { |