1. 程式人生 > >【LeetCode】113.Jump Game

【LeetCode】113.Jump Game

題目描述(Medium)

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

題目連結

https://leetcode.com/problems/jump-game/description/

Example 1:

Input: [2,3,1,1,4]
Output: true
Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.

Example 2:

Input: [3,2,1,0,4]
Output: false
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.

演算法分析

由於每個點最多可以跳A[i]步,也可以跳0或者1步,因此如果能跳到最後一位,說明每一位都可以到達。那麼只需要計算出每個點所能到達的最遠處,如果最遠處超過最後一位,則說明可以到達。

提交程式碼:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int reach = 1;
        
        for (int i = 0; i < reach && reach < nums.size(); ++i) 
            reach = max(reach, nums[i] + i + 1);

        return reach >= nums.size();
    }
};