码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】跳跃游戏

时间:2017-08-01 15:43:09      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:size   用例   for   return   应该   class   style   vector   false   

给定一组非负整数,初始时处于数组的第一位下标 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】跳跃游戏

标签:size   用例   for   return   应该   class   style   vector   false   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!