1. 程式人生 > >Leecode 55. 跳躍遊戲(Jump Game)

Leecode 55. 跳躍遊戲(Jump Game)

題目: 給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最後一個位置。

輸入: [2,3,1,1,4] 輸出: true 解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後一個位置。

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

思路: 考慮出現0的處理辦法,只要出現0之前某數可以越過0所對應的位置即可 如A = [3,3,1,0,4],i=3時A[i]=0,而A[1]>(3-1)即可越過該0

參考解答:
class Solution {
public:
    bool canJump(vector<int>& nums) {
        if(nums.size()==1)
            return true;
        if(nums[0]==0)
            return false;
        for(int i=1;i<nums.size()-1;i++){
            if(nums[i]==0){
                for(int j=i-1;nums[j]<=(i-j);j--)
                    if(j==0)
                        return false;
            }
        }
        return true;
    }
};