p126 跳跃游戏(leetcode 55)
一:解题思路
Time:O(n),Space:O(1)
maxValue为最远可以跳到的距离。
1.如果当前的可以跳到的最远距离已经到底了末尾,或者已经超过末尾的,直接返回true。
2.如果当前下标已经超过最远可以到达的距离,直接返回false。
3.不断更新最远可以跳到的距离。
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: bool canJump(vector<int>& nums) { if (nums.size() == 0) return false; int n = nums.size(); int maxValue = 0; for (int i = 0; i < n; i++) { if (maxValue >= n - 1) return true; if (i > maxValue) return false; maxValue = max(maxValue,i+nums[i]); } return false; } };
Java:
class Solution { public boolean canJump(int[] nums) { if(nums==null || nums.length==0) return false; int n=nums.length; int maxValue=0; for(int i=0;i<n;i++) { if(maxValue>=n-1) return true; if(i>maxValue) return false; maxValue=Math.max(maxValue,i+nums[i]); } return false; } }

浙公网安备 33010602011771号