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 
#include 
#include 
#include 

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测试程序源码

你可能感兴趣的:(LeetCode,&,LintCode)