Leetcode 貪心 Jump Game II,leetcodejump
Jump Game II Total Accepted: 16242 Total Submissions: 65802My Submissions
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.)
題意:
給一個包含非負整數的數組,每個數表示最大能跳躍的距離,最初的位置在
下標 0處,求跳到數組的最後一個位置所需的最少步數
思路:貪心
定義兩個變數start和 end,
start 表示還沒掃描的數組元素的起點,
end 表示當前能到達的位置,
掃描數組,不斷擴大 end,更新 start。每這樣一個過程為一步
複雜度:O(n)
int jump(int A[], int n) {if(n <= 1) return 0;int start = 0, end = 0, count = 0;while (1){count ++;int _max = end; //_max表示[start, end]區間能達到的最遠的位置 for(int i = start, i <= end; ++i){_max = max(_max, i + A[i]);if(_max >= n - 1){return count;}}start = end;end = _max;}}