博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Jump Game 解题报告
阅读量:6440 次
发布时间:2019-06-23

本文共 1381 字,大约阅读时间需要 4 分钟。

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,定义 jump[i]为从index 0 走到第i步时,剩余的最大步数。
那么转移方程可定义为
jump[i] = max(jump[i-1], A[i-1]) -1, i!=0           = 0 , i==0
然后从左往右扫描,当jump[i]<0的时候,意味着不可能走到i步,所以return false; 如果走到最右端,那么return true.
[Code]
1:  bool canJump(int A[], int n) {  2:      // Start typing your C/C++ solution below  3:      // DO NOT write int main() function  4:      int* jump = new int[n];  5:      jump[0] = 0;  6:      for(int i=1; i < n; i++)  7:      {  8:        jump[i] = max(jump[i-1], A[i-1]) -1;  9:        if(jump[i] <0)  10:          return false;;  11:      }  12:      return jump[n-1] >=0;  13:    }
Update, 3/14/2013
Just one round DP. No need an array to track the status. Refactor the code.
1:       bool canJump(int A[], int n) {  2:            int maxCover = 0;  3:            for(int start =0; start<= maxCover && start
maxCover) 6: maxCover = A[start]+start; 7: if(maxCover >= n-1) return true; 8: } 9: return false; 10: }

转载于:https://www.cnblogs.com/codingtmd/archive/2012/12/24/5079000.html

你可能感兴趣的文章
java 网站用户在线和客服聊天
查看>>
正则表达式语法
查看>>
《IT项目管理》读书笔记(1) —— 概述
查看>>
MFC处理中文路径
查看>>
bzoj2560串珠子
查看>>
mount什么意思
查看>>
List 简单升\降序实现
查看>>
Linux diff patch
查看>>
CF940B Our Tanya is Crying Out Loud
查看>>
c++-链表的回文结构
查看>>
[C编码笔记] 空串与NULL是不一样的
查看>>
实验报告一
查看>>
XML模块
查看>>
编写自动化测试用例的原则
查看>>
poj2955(区间dp)
查看>>
0507-php独立环境的安装与配置
查看>>
bzoj 1876 高精
查看>>
bzoj 1072 状压DP
查看>>
做了setuid()这类调用的程序如何产生core dump
查看>>
突然多了个机会…纠结了一个星期。
查看>>