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.)

用queue实现bfs的思想,Memory Limited Exceeded!

然后把queue改成vector实现同样的思想,Time Limited Exceeded!

class Solution {
public:
int jump(int A[], int n) {
if(n<)
return ;
pair<int,int> temp;//pair记录下标和到此下标的步数
vector<pair<int,int> > v1;
int minStep = n ;
temp = make_pair(,);
v1.push_back(temp);
while(!v1.empty()){
temp = v1.back();
int Index = temp.first;
int step = temp.second;
v1.pop_back();
if(Index>=n-){
if(step == )
return ;
else if(step<minStep)
minStep = step;
continue;
}
int newIndex = Index + A[Index];
if(newIndex == Index)
continue;
temp = make_pair(newIndex,++step);
v1.push_back(temp);
for(int i = Index+;i<newIndex;i++){
if(i+A[i]<newIndex)
continue;
else{
temp = make_pair(i+A[i],step+);
v1.push_back(temp);
}
}
}//end while
return minStep;
}//end func
};

克服浪费时间和浪费空间的问题,Here is a solution from other,怎么会如此简洁(贪婪算法):

/*
* We use "last" to keep track of the maximum distance that has been reached
* by using the minimum steps "ret", whereas "curr" is the maximum distance
* that can be reached by using "ret+1" steps. Thus,
* curr = max(i+A[i]) where 0 <= i <= last.
*/ class Solution { //last和curr都是下标
public:
int jump(int A[], int n) {
int ret = ;
int last = ;
int curr = ;
for (int i = ; i < n; ++i) {
if (i > last) {
last = curr;
++ret;
}
curr = max(curr, i+A[i]); //经过ret+1步跳到的下标curr位置
}
return ret;
}
};

[LeetCode] Jump Game II(贪婪算法)的更多相关文章

  1. LeetCode: Jump Game II 解题报告

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

  2. [LeetCode] Jump Game II 跳跃游戏之二

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

  3. LeetCode——Jump Game II

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

  4. [LeetCode] Jump Game II 贪心

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

  5. Leetcode jump Game II

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

  6. leetcode–jump game II

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

  7. leetcode Jump Game II python

    @link http://www.cnblogs.com/zuoyuan/p/3781953.htmlGiven an array of non-negative integers, you are ...

  8. [Leetcode] jump game ii 跳跃游戏

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

  9. 【To Read】LeetCode | Jump Game II(转载)

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

随机推荐

  1. Tri Tiling[HDU1143]

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. extjs 选项卡

    yufenghou extjs 选项卡 <%@ page language="java" import="java.util.*" pageEncodin ...

  3. android 全屏视频播放(SurfaceView + MediaPlayer)

    介绍个第三方: JieCaoVideoPlayer 实现Android的全屏视频播放,支持完全自定义UI.手势修改进度和音量.hls.rtsp,设置http头信息,也能在ListView.ViewPa ...

  4. 【BZOJ】1191: [HNOI2006]超级英雄Hero(二分图匹配)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1191 一眼题,笑嘻嘻地写了匈牙利,提交..WA了?不科学!!!!!数组小了??不思考了,改大提交,. ...

  5. CentOS下搭建使用gitlab 和tortoiseGit使用

    gitlab和github 一样很爽的一个东西 关于gitlab在CentOS下的安装方法地址参考: https://github.com/gitlabhq/gitlab-recipes/tree/m ...

  6. PHP 实现 一致性哈希 算法(转的)

    <?php /** * Flexihash - A simple consistent hashing implementation for PHP. * * The MIT License * ...

  7. 【C语言】17-预处理指令3-文件包含

    这讲介绍最后一个预处理指令---文件包含 一.基本概念 其实我们早就有接触文件包含这个指令了, 就是#include,它可以将一个文件的全部内容拷贝另一个文件中. 二.一般形式 1.第1种形式#inc ...

  8. sqlmap遇到url重写的示例

    url_rewrite 这个问题 国内外的坛子里都有人问. D:\cygwin\pentest\database\sqlmap\doc \faq.pdf 下面是官方给的解答. 1.15 How to ...

  9. Functional programming

    In computer science, functional programming is a programming paradigm, a style of building the struc ...

  10. 三层交换单臂路由vlan间通信综合实验之降龙要点--Lee

    单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1,    20.1,  30.1,   40,1  ,50,1  /24 网关10.2 ...