跳跃游戏 II
给出一个非负整数数组,你最初定位在数组的第一个位置。
数组中的每个元素代表你在那个位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
样例
给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)
解题
终于自己还是没有解决出来
参考链接 理解不透
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; } }
这个好理解
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 integer def jump(self, A): # write your code here if A == None or len(A)<= 1: return 1 MaxJump = A[0] subJump = A[0] count = 1 for i in range(1,len(A)): if subJump <i: count+=1; subJump = MaxJump MaxJump = max(MaxJump , A[i] + i) return count