跳跃游戏 II
给出一个非负整数数组,你最初定位在数组的第一个位置。
数组中的每个元素代表你在那个位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
样例
给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)
解题
Jump1
终于自己还是没有解决出来
参考链接 理解不透
public class Solution {/*** @param A: A list of lists of integers* @return: An integer*/public int jump(int[] A) {int target = A.length-1;int cnt = 0;while(target > 0) {for(int i=0; i<target; i++) {if(i+A[i] >= target) {target = i;cnt++;break;}}}return cnt;}}
参考链接2
这个好理解
public class Solution {/*** @param A: A list of lists of integers* @return: An integer*/public int jump(int[] nums) {int ret = 0;int curMax = 0;int curRch = 0;for(int i = 0; i < nums.length; i ++) // 一个一个的扫描{if(curRch < i)// 跳不到 i位置,选取前面可以跳的最远 位置{ret ++;curRch = curMax;}curMax = Math.max(curMax, nums[i]+i);// 能够跳到最远的 那个位置 }return ret;}}
Python
class Solution:# @param A, a list of integers# @return an integerdef jump(self, A):# write your code hereif A == None or len(A)<= 1:return 1MaxJump = A[0]subJump = A[0]count = 1for i in range(1,len(A)):if subJump <i:count+=1;subJump = MaxJumpMaxJump = max(MaxJump , A[i] + i)return count