lintcode ----跳跃游戏
2016-07-01 15:57
295 查看
法一:动态规划 【先把A[0]加到res,如果res[i-1]能走到 i ,那么res[i]存的即为能走的最远的距离(从res[i-1] 和A[i]+i)中取得】
法二:贪心法【最大步数能走到当前步则每次用最远距离更新最大步,每次判断是否可以走到最后,可以直接返回true,如果连当前步都走不到,跳出while 返回false】
bool canJump(vector<int> A) { // write you code here vector<int> res; res.push_back(A[0]); for(int i=1;i<A.size();i++) { if(res[i-1]>=i) res.push_back(max(A[i]+i,res[i-1])); else res.push_back(0); } return res[res.size()-1]>=A.size()-1; }
法二:贪心法【最大步数能走到当前步则每次用最远距离更新最大步,每次判断是否可以走到最后,可以直接返回true,如果连当前步都走不到,跳出while 返回false】
bool canJump(vector<int> A) { // write you code here int max_gap =0; int cur = 0; while(max_gap>=cur) { max_gap=max(max_gap,cur+A[cur]); cur++; if(max_gap>=A.size()-1) return true; } return false; }
相关文章推荐
- 我是运营,我没有假期
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#比较二个数组并找出相同或不同元素的方法
- C#动态调整数组大小的方法
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法