【LeetCode】55. ジャンプゲーム結題レポート(C++)

1008 ワード

原題住所:https://leetcode-cn.com/problems/jump-game/description/
タイトルの説明:
非負の整数配列を指定すると、最初に配列の最初の位置に位置します.
配列内の各要素は、その位置でジャンプできる最大長を表します.
あなたが最後の位置に着くかどうかを判断します.
例1:
  : [2,3,1,1,4]
  : true
  :     0   1   1  ,     3          。

例2:
  : [3,2,1,0,4]
  : false
  :     ,         3    。             0 ,                 。

問題解決方案:
この問題は45問題と似ていて、同じ考え方を採用しています.
class Solution {
public:
    bool canJump(vector& nums) {
        int i = 0, j = 1, n = nums.size();
        while(j < n){
            int end = min(nums[i] + i + 1, n);
            if(nums[i] == 0)    return false;
            while(j < end){
                if(nums[j] + j >= nums[i] + i )  i = j;
                j ++;
            }
            if(nums[i] + i > n) break;
        }
        return true;
    }
};