LeetCode(55)Jump Game

题目

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.

For example:
A = [2,3,1,1,4], return true.

A = [3,2,1,0,4], return false.

分析

该题目考察的贪心算法的应用。从第一步开始计算可以前进的最大步长,每走一步比较更新该值,始终保持当前位置的时候可前进步长最大。到达最终位置前,若出现步长<= 0的情况,说明失败。

AC代码

#include <iostream>
#include <cstdlib>
#include <vector>
#include <algorithm>

using namespace std;

//贪心算法
class Solution {
public:
    bool canJump(vector<int>& nums) {
        if (nums.empty())
            return false;

        int maxStep = nums[0];
        int len = nums.size();

        for (int i = 1; i < len; ++i)
        {
            if (maxStep <= 0)
                return false;
            else{
                maxStep = max(--maxStep, nums[i]);
            }//else
        }//for

        return true;
    }
};

GitHub测试程序源码

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页