首页 > 其他 > 详细

【LeetCode】跳跃游戏

时间:2017-08-01 15:28:38      阅读:300      评论:0      收藏:0      [点我收藏+]

给定一组非负整数,初始时处于数组的第一位下标 0 的位置,数组的每个元素代表那个位置可以跳跃的最大长度。判断你是否能够到达数组的最后一位下标。

e.g. 

A = [2, 3, 1, 1, 4],返回 true。

A = [3, 2, 1, 0, 4],返回 false。

 

我的想法是递归

 1 bool canJump(vector<int>& nums) {
 2     return jump(nums, 0);
 3 }
 4     
 5 bool jump(vector<int> &nums, int m) {
 6     if (m + nums[m] >= nums.size() - 1) return true;
 7     if (m == nums.size() - 1)   return true;
 8     for (int i = nums[m]; i >= 1; i--) {
 9         if (jump(nums, m + i))
10             return true;
11     }
12     return false;
13 }

经部分测试用例检验,算法应该是正确的。

技术分享

技术分享

 

但当数据量很大时会超时,如果不能到达,更是会超时。

技术分享

 

【LeetCode】跳跃游戏

原文:http://www.cnblogs.com/wayne793377164/p/7268492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!