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

LeetCode---55.跳躍遊戲

題目來源:https://leetcode-cn.com/problems/jump-game/description/

題目描述:

 題目分析:這個題要先理解題目,題目中說的是:數字代表的是最大的可跳躍長度,比如數字是3,那麼你跳1,2,3都行,而不是隻可以跳3步。經過思考返回true有兩種情況,一種是剛好跳到最後一個位置上,一種是超過最後一個位置。因為這題不需要求出每次跳的步數,只需要知道能否跳到最後。所以這兩種情況其實就是一種。

演算法描述:1.定義max用來存放當前能跳的最遠距離。i從0開始遍歷,每到一個位置都判斷max的值是否大於i,如果小於i說明當前的最大步數不足以走到i位置,則直接返回false,否則,讓當前i位置能走的最大步數和max比較。讓max重新賦值。

程式碼如下:

bool canJump(int* nums, int numsSize) {
    int max=0;
    for(int i=0;i<numsSize;i++){
        if(i>max){
            return false;
        }else{
            max=max>(nums[i]+i)?max:(nums[i]+i);
        }
    }
    return true;
}