Jump Game II 到达终点的最小步数 模拟

原创 2015年07月07日 21:26:19

Jump Game II

 

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.

Your goal is to reach the last index in the minimum number of jumps.

For example:
Given array A = [2,3,1,1,4]

The minimum number of jumps to reach the last index is 2. (Jump 1 step from index 0 to 1, then 3 steps to the last index.)

Hide Tags
 Array Greedy
class Solution {
public:
//用动态规划 超时了
/*
    int jump(vector<int>& nums) {
        
        int len=nums.size();
        int *dp=new int[len];
        const int MAX=9999999;
        dp[0]=0;
        
        for(int i=1;i<len;i++)
            dp[i]=MAX;
            
        for(int i=1;i<len;i++)
        {
            for(int j=0;j<i;j++)
            {
                if(j+nums[j]>=i)
                {
                    int tmp=dp[j]+1;
                    if(tmp<dp[i])
                    {
                        dp[i]=tmp;
                        break;
                    }
                }
            }
        }
        
        return dp[len-1];
    }
    
    
    //倒退也超时
    int jump(vector<int>& nums) {
    
        int n=nums.size();
        int pre=0,last=n-1;
        int sum=0;
        while(1)
        {
            if(pre==last)
                return 0;
            pre=last;//两个节点保存当前位置,pre向前遍历寻找满足的,last保存当前位置
            sum++;
            for(int i=n-2;i>=0;i--)
            {
                if(i+nums[i]>=last)
                {
                    if(pre>i)
                        pre=i;
                }
            }
            
            if(pre==0)
                return sum;
        };
    } 
    */   
    /*参考别人的:
    sum:目前为止的jump数
    cur:从A[0]进行sum次jump之后达到的最大范围,当前能到达的最大的
    curMax:从0~i这i+1个A元素中能达到的最大范围,就是当前该位置可以覆盖的最大范围
    当cur<i,说明sum次jump已经不足以覆盖(>=)当前第i个元素,因此需要增加一次jump,使之达到记录的curMax。
    A = [2,3,1,1,4]模拟即可
*/
    int jump(vector<int>& nums) {
    
        int cur=0,curMax=0,sum=0;
        int n=nums.size();
        for(int i=0;i<n;i++)
        {
            if(cur<i)
            {
                sum++;
                cur=curMax;
            }
            curMax=max(curMax,i+nums[i]);
        }
        return sum;
    }
};

Jump Game II 最小到达终点的步数

class Solution { public: //贪心的规则就是在能够到达的范围内,选择一个能够到达最远距离的点,更新步数,更新最远到达的范围     int jump(int A[], i...
  • tangyifei1991
  • tangyifei1991
  • 2014年01月21日 10:45
  • 285

Jump Game II (最小步数到达终点,贪心) 【leetcode】

题目: Given an array of non-negative integers, you are initially positioned at the first index of the...
  • zhang9801050
  • zhang9801050
  • 2013年09月20日 19:33
  • 12971

Jump Game II -- LeetCode

原题链接: http://oj.leetcode.com/problems/jump-game-ii/  这道题是Jump Game的扩展,区别是这道题不仅要看能不能到达终点,而且要求到达终点的最少...
  • linhuanmars
  • linhuanmars
  • 2014年03月20日 23:25
  • 14657

LeetCode --- 45. Jump Game II

题目链接:Jump Game II Given an array of non-negative integers, you are initially positioned at the firs...
  • makuiyu
  • makuiyu
  • 2015年02月10日 08:59
  • 1079

[LeetCode]Jump Game II(贪心&&DP!!!!!)

Given an array of non-negative integers, you are initially positioned at the first index of the a...
  • whzyb1991
  • whzyb1991
  • 2015年07月18日 13:27
  • 424

[LeetCode][Java] Jump Game II

题目: Given an array of non-negative integers, you are initially positioned at the first index of...
  • Evan123mg
  • Evan123mg
  • 2015年07月14日 10:55
  • 861

LeetCode_Jump Game&&Jump Game II

Given an array of non-negative integers, you are initially positioned at the first index of the arra...
  • loveRooney
  • loveRooney
  • 2014年08月09日 12:46
  • 9669

【LeetCode】Jump Game II 解题报告

【题目】 Given an array of non-negative integers, you are initially positioned at the first index o...
  • ljiabin
  • ljiabin
  • 2014年12月09日 17:17
  • 3587

LeetCode(045) Jump Game II (Java)

题目如下: Given an array of non-negative integers, you are initially positioned at the first index of t...
  • feliciafay
  • feliciafay
  • 2015年04月13日 15:00
  • 1050

leetcode_c++:Jump Game II(045)

题目Given an array of non-negative integers, you are initially positioned at the first index of the ar...
  • mijian1207mijian
  • mijian1207mijian
  • 2016年05月23日 22:43
  • 124
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jump Game II 到达终点的最小步数 模拟
举报原因:
原因补充:

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