leetcode 55. Jump Game
2016-04-08 22:07
232 查看
题意
每个坐标都有最大跳跃距离,可以跳到此区间[当前下标,当前下标+最大距离]的任意一点,问起点0开始能否跳到最后一点题解
1、开始使用了dp,从后往前记录下可以跳到最后的下标的每一个点,超时2、使用贪心算法,从前往后走,若第i点能走到最大距离longest,则说明i和longest之间的点(i+1,i+2…)都能走到。
代码
dp超时class Solution { public: bool canJump(vector<int>& nums) { bool dp[nums.size()]; dp[nums.size() - 1] = true; for(int i = nums.size() - 2; i >= 0; i--) { if(i + nums[i] >= nums.size() - 1) { dp[i] = true; continue; } for(int j = 0; j <= nums[i]; j++) { if(i + j < nums.size() && nums[i + j] == true) { dp[i] = true; break; } } dp[i] = false; } return dp[0]; } };
贪心
class Solution { public: bool canJump(vector<int>& nums) { int longest = 0; for(int i = 0; i < nums.size(); i++) { if(i > longest) // exist 0 step so that can't reach i return false; else { if(i + nums[i] > longest) longest = i + nums[i]; } } return longest >= nums.size() - 1; } };
相关文章推荐
- 树中的两个结点之间的距离
- javascript打算看的书
- 双重循环排序与冒泡排序算法
- java的异常处理
- 【剑指offer】斐波那契数列
- 虚拟现实技术走进课堂—全国首堂沉浸式教学系统公开课开启VR教育新纪元
- 操作型模式之Template Method(模板方法)模式
- 腾讯云CentOS安装Nginx
- java常用类
- JAVA线程池源码探究与简单小例子
- 1017
- 前端的架构
- Oracle数据库--实用操作(1)
- 起名真麻烦
- codeforces 593E
- 查看mysql语句运行时间
- 做汉堡
- 学习记录--javascript多态
- hdu5294(最大流+最短路)Tricks Device
- 2017京东实习生笔试题(二)