Menu Close

Jump Game

Follow me on :
– Youtube: https://bit.ly/2UIVIAD
– Facebook: https://bit.ly/2XbMYow

Asked In: Amazon, Ebay

Problem:

Cho một mảng nguyên không âm, bạn bắt đầu ở vị trí đầu mảng. Cần tìm xem có cách đến cuối mảng không. Biết rằng giá trị ở vị trí hiện tại cho biết số lượng step tối đa có thể đi.

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.

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.

Solution

Độ phức tạp thời gian: O(n)
Độ phức tạp không gian: O(1)

    bool canJump(vector< int >& nums) {
        int zero = -1;
        for(int i=nums.size()-2;i>=0;i--){
            if(nums[i]==0&&zero==-1)
                zero = i;
            else{
                if(zero != -1){
                    if(nums[i]>=(zero-i)+1){
                        zero = -1;
                    }
                }
            }
        }
        return zero==-1;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *