LeetCode Jump Game II,leetcodejump
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.)
題意:求最快到達最後一個位置的步數。
思路:用Max表示[0, i-1]能到達的最遠距離,cur表示用ans步到達的距離。那麼如果cur<i的話,代表它需要再走一步,所以它就可以到達前i-1能到達的最遠距離,可以這麼想Max一定是某個位置起跳的,而cur也一定是大於等於Max的起始位置的,因為每個位置的是都是非負數,所以cur一定是>=Max的起始位置的,可以動手寫寫。
class Solution {public: int jump(int A[], int n) { int ans = 0, Max = 0, cur = 0; for (int i = 0; i < n; i++) { if (cur >= n-1) break; if (cur < i) { ans++; cur = Max; } Max = max(Max, A[i]+i); } return ans; }};