Jump Game II

Problem:

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.)

    有點像接力賽,需要挑選潛力最大的下一棒。如果到達當前節點需要的跳數是最少的,如何選擇下一跳呢?如果下一跳能夠到達終點,那就直接跳到終點,如果不能到達終點,那就從當前節點覆蓋的範圍內選擇跳得最遠的那一個節點。
Solution:
public class Solution {
    public int jump(int[] A) {
     if(A==null||A.length<=1)
         return 0;

     int max_reach = A[0];
     int min_step = 1;
     int pos = 0;
     while(max_reach<A.length-1)
     {
         int max = max_reach;
         for(int i=pos+1;i<=max_reach;i++)
             if(i+A[i]>max)
             {
                 max = i+A[i];
                 pos = i;
             }
         max_reach = max;
         min_step++;
      }
      return min_step;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章