Jump Game

Jump Game


今天是一道有關貪婪算法的題目,來自LeetCode#55,難度為Medium,Acceptance為27.2%

題目如下

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.
Determine if you are able to reach the last index.
For example:
A = [2,3,1,1,4], return true.
A = [3,2,1,0,4], return false.

思路如下

該題中只需要求能不能到達最后一個元素,而不必求最少的步數,相對較為簡單。只要按照貪婪算法,每到下一個元素求由該元素開始的最遠的元素i + nums[i]即可。

代碼如下

java版
public class Solution {
    public boolean canJump(int[] nums) {
        int reach = 0;
        for(int i = 0; i <= reach && reach < nums.length; i++) {
            reach = Math.max(reach, i + nums[i]);
        }
        return reach >= nums.length - 1;
    }
}
C++版
bool canJump(int A[], int n) {
    int i = 0;
    for (int reach = 0; i < n && i <= reach; ++i)
        reach = max(i + A[i], reach);
    return i == n;
}

關注我
該公眾號會每天推送常見面試題,包括解題思路是代碼,希望對找工作的同學有所幫助

image
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容