leetcode_c++: Jump Game(055)

原创 2016年05月31日 01:21: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.


算法

DP:局部最优和全局最优解法
复杂度:O(N)

  • 维护两个变量
  • 全局最优:到目前为止能跳到的最远距离
  • 局部最优:从当前一步出发能跳到的最远距离
  • local[i]=A[i]+i
  • global[i]=max(global[i],local[i])


class Solution {
public:
    bool canJump(vector<int>& nums) {
        int n=nums.size();
        if(n==0)
            return 0;
        int reach=0;
        for(int i=0;i<=reach && i<n;i++){
            reach=max(nums[i]+i,reach);
        }

        if(reach<n-1)
            return false;
        return true;
    }
};

算法

贪心:O(N)

  • 跳到位置i后,可以达到的最大距离至少是i+A[i]
  • 记录当前能达到的最远距离maxIndex
    1. 能跳到的位置 i 的条件是: i<=maxIndex
    2. 一旦跳到i,则maxIndex=max(maxIndex,i+A[i])
    3. 能跳到最后一个位置 n1 的条件是maxindex>=n-1

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int n=nums.size();
        int maxIndex=0;
        for(int i=0;i<n;i++){
            if(i>maxIndex || maxIndex>=(n-1))
                break;
            maxIndex=max(maxIndex,i+nums[i]);
        }

        return maxIndex>=(n-1)? true:false;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode】Jump Game (一维动态规划 + 线性扫描)

Given an array of non-negative integers, you are initially positioned at the first index of the arra...
  • xiaozhuaixifu
  • xiaozhuaixifu
  • 2013年10月30日 15:23
  • 6636

寻找最少次跳数 - 贪心VS动态规划 Jump Game 2

非常好的问题:Given an array of non-negative integers, you are initially positioned at the first index of t...
  • luckyjoy521
  • luckyjoy521
  • 2014年03月14日 12:35
  • 2338

【数据结构与算法】Jump Game

【题目】: 【解法】:第一开始,想到的是采用递归的方式,后来出现了栈泄露的错误。后来看了Discuss发现可以使用循环的方式。 [解法1] 从头到尾循环 每次的for循环只循环当前点能到的所...
  • u013177446
  • u013177446
  • 2017年01月05日 19:41
  • 111

【算法】【Greedy】Jump Game II

Given an array of non-negative integers, you are initially positioned at the first index of the arra...
  • wurlin
  • wurlin
  • 2017年12月28日 12:31
  • 15

数组跳跃游戏 Jump Game

题目源自于leetcode。 题目:Given an array of non-negative integers, you are initially positioned at the first...
  • luckyjoy521
  • luckyjoy521
  • 2013年11月29日 19:22
  • 1293

LeetCode 之 Jump Game(贪心算法)

LeetCode 之 Jump Game,本文给出基于动态规划思想、贪心算法的三种实现思路分析,最后,贴上三套C++详细源码实现。...
  • u013630349
  • u013630349
  • 2015年08月05日 11:05
  • 907

经典算法——Jump Game(II)

Given an array of non-negative integers, you are initially positioned at the first index of the arra...
  • geekmanong
  • geekmanong
  • 2016年04月08日 15:14
  • 751

算法练习(9)—— Jump Game II

算法练习(9)—— Jump Game II习题本题取自 leetcode 中的 Greedy 栏目中的第45题: Jump Game II题目如下: Description ...
  • sasaki_yori
  • sasaki_yori
  • 2017年11月20日 00:07
  • 31

[Game Engine]开源游戏框架(转至wiki)

   Agar - 一个高级图形应用程序框架,用于2D和3D游戏。Allegro - 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及G...
  • huodianyan
  • huodianyan
  • 2014年09月29日 08:17
  • 1017

LeetCode OJ 之 Jump Game (“跳跃”游戏 - 一)

题目: Given an array of non-negative integers, you are initially positioned at the first index of th...
  • u012243115
  • u012243115
  • 2015年01月12日 11:30
  • 294
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode_c++: Jump Game(055)
举报原因:
原因补充:

(最多只允许输入30个字)