leetcode 55. 跳躍遊戲 擊敗99.98%

給定一個非負整數數組,你最初位於數組的第一個位置。

數組中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後一個位置。

示例 1:

輸入: [2,3,1,1,4] 輸出: true 解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3
步到達最後一個位置。 示例 2:

輸入: [3,2,1,0,4] 輸出: false 解釋: 無論怎樣,你總會到達索引爲 3 的位置。但該位置的最大跳躍長度是 0 ,
所以你永遠不可能到達最後一個位置。

public boolean canJump(int[] nums) {
        if (nums.length < 2) {
            return true;
        }
        boolean[] dp = new boolean[nums.length];
        //targetPos表示當前位置元素要最終跳到終點,下一步至少需要能跳到的位置
        int targetPos = nums.length - 1;
        for (int i = nums.length - 2; i >= 0; i--) {
            //能夠跳到目標位置,則當前位置是可達位置
            if (nums[i] + i >= targetPos) {
                dp[i] = true;
                //將至少能跳到的位置更新
                targetPos = i;
            }
        }
        return dp[0];
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章