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]55. Jump Game ,C++/PYTHON实现,medium难度

[leetcode]55. Jump Game ,C++/PYTHON实现,medium难度

LeetCode 055 Jump Game

题目 思路 1 可以想到用递归,思路大...
  • seawade
  • seawade
  • 2014年08月17日 11:37
  • 508

Leetcode Algorithm 055. Jump Game

Leetcode Algorithm 055. Jump Game 给定一个非负整数的数组,数组中的元素表示从当前位置可以跳过的最长步数;判断从数组的第一个位置,能否跳到最后一个位置...

[C++]LeetCode: 104 Jump Game II (局部最优和全局最优法)

题目: Given an array of non-negative integers, you are initially positioned at the first index of t...

[leetcode]45. Jump Game II 跳棋游戏2 C++/PYTHON实现【hard难度】

题目 Given an array of non-negative integers, you are initially positioned at the first index of the...

LeetCode第45之 Jump Game II

看了好几种算法实现,感觉这里说的最清楚,也比较简单,本算法思想也是来源于此。 解法看完这道题目,可能大部分的读者都能够想出这样一个相对简单的解法:将每个位置都看作一个点,并从第i个点向它之后的num...

LeetCode Jump Game II

Description: Given an array of non-negative integers, you are initially positioned at the first...

[leetcode] 55. Jump Game

Given an array of non-negative integers, you are initially positioned at the first index of the arra...

LeetCode:Jump Game I && II

Jump Game   Given an array of non-negative integers, you are initially positioned at the first...

leetcode题解-55. Jump Game && 56. Merge Intervals

55, 题目:Given an array of non-negative integers, you are initially positioned at the first index of t...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode_c++: Jump Game(055)
举报原因:
原因补充:

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