您的位置:首页 > 其它

算法课第六周作业 | Jump Game

2017-04-02 16:37 176 查看
写在前面:

本周算法课主题内容是贪心算法,这道LeetCode 55正是用贪心算法解决。

题意解读:

给定一个非负整数组,每个位置的整数代表从当前位置可以前进的最大步数。

每次都是从第一个位置出发,请问给定的数组能否到达最后一个位置。

解题思路:

应用贪心算法,从第一个位置开始遍历,计算每一步能够到达的最大步数,如果最后一个位置在这个步数内,则可以到达。

如果在前进的过程中,最大步数等于0,无法前进自然不可到达,返回false。每前进一步,Max都要-1,并对比当前位置i的数值。

如果当前位置i的数值——可前进最大步数大与上一步遗留的最大步数,则更新最大步数。代码如下。

代码:

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
bool canJump(vector<int>& nums) {
int size = nums.size();
if(size <= 0)
return false;

int max = -1;
for(int i = 0; i < size; i++)
{
if(nums[i] > max)
max = nums[i];

if (max + i + 1 >= size)
return true;

if(max == 0)
return false;

max = max - 1;
}

return false;
}
};


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: