# 55. Jump Game

### Leetcode

#### <https://leetcode.com/problems/jump-game/description/>

### 題目

You are given an integer array `nums`. You are initially positioned at the array's **first index**, and each element in the array represents your maximum jump length at that position.

Return `true` *if you can reach the last index, or* `false` *otherwise*.

&#x20;

**Example 1:**

<pre><code><strong>Input: nums = [2,3,1,1,4]
</strong><strong>Output: true
</strong><strong>Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.
</strong></code></pre>

**Example 2:**

<pre><code><strong>Input: nums = [3,2,1,0,4]
</strong><strong>Output: false
</strong><strong>Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.
</strong></code></pre>

### 解答 <a href="#ti-jie" id="ti-jie"></a>

* **方法一**

紀錄目前最大可以走到的位置 (`max`)，接著每走一步都去更新 `max`， 當走到的 `index > max`  時，就代表這個地方走不到

```javascript
var canJump = function (nums) {
    let max = 0;

    for (let i = 0; i < nums.length; i++) {
        // 走不到
        if (i > max) {
            return false;
        }

        const value = nums[i];
        max = Math.max(max, i + value);
        // max 大於總長度 => 走得到終點
        if (max >= nums.length - 1) {
            return true;
        }
    }

    return true;
};
```

### 參考資料

{% embed url="<https://leetcode.wang/leetCode-55-Jump-Game.html>" %}
