55 Jump Game

来源:互联网 发布:抗风柱设计软件 编辑:程序博客网 时间:2024/06/04 19:12

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.


#include<stdio.h>#include <iostream>#include <vector>#include<algorithm>#include<functional>#include<tr1/unordered_map>using namespace std;class Solution {public:    bool canJump(vector<int>& nums) {    int i = 0;    int n = nums.size();    for (int reach = 0; i < n && i <= reach; ++i)        reach = max(i + nums[i], reach);    return i == n;    }};int main(){    Solution s;    vector<int> vec_A;    int c,n;    cin>>n;    for(int i=0;i<n;i++){        cin>>c;        vec_A.push_back(c);    }    cout<<s.canJump(vec_A)<<endl;    return 0;}

采用贪心算法,每次迭代算出能到达的最大位置,若指针未到达列表末位且已经超过目前能到达的最大位置时说明无法到达列表末位,无法跳出。

原创粉丝点击