1. 程式人生 > 其它 >LeetCode-55-跳躍遊戲

LeetCode-55-跳躍遊戲

LeetCode-55-跳躍遊戲

原題連結


描述

給定一個非負整數陣列 nums ,你最初位於陣列的 第一個下標

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

判斷你是否能夠到達最後一個下標。


示例

示例 2:

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


思路

動態規劃。首先假設終點是 i,在到達終點的前一個狀態所在的是 j(如果存在的話),到達終點時只有一種情況:j < i 並且 nums[ j ] >= i - j。而初始狀態,只有 k 中可能,k 是 num[0] 的數。


解答

class Solution {
    public static boolean canJump(int[] nums) {
        int len = nums.length;
        boolean[] dp = new boolean[len];
        dp[0] = true;
        for (int i = 1; i < len; ++i) {
            dp[i] = false;
            for (int j = 0; j < i; ++j) {
                if (dp[j] && j + nums[j] >= i) {
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp[len - 1];
    }
}

本文來自部落格園,作者:klaus08,轉載請註明原文連結:https://www.cnblogs.com/klaus08/p/15182442.html