可以设置一个变量记录能到达最右边的位置,如果该位置大于数组长度则返回true。否则每前进一步,更新下这个能到达最右边的位置变量。
或者可以用逆向思维,要达到最后一个,首先必须能达到前面位置中的某一个。这里采用逆向法。
1 class Solution { 2 public: 3 bool judge(vector & nums, int index) 4 { 5 if(index==0) 6 return true; 7 int testi=index-1; 8 while(testi>=0) 9 {10 if(nums[testi]+testi>=index)11 {12 return judge(nums,testi);13 }14 testi--;15 }16 return false;17 }18 bool canJump(vector & nums) {19 if(nums.size()==0||nums.size()==1)20 return true;21 int length=nums.size();22 return judge(nums,length-1);23 }24 };