如题
一眼看上去最直观肯定就是递归了,那就安排
public static boolean canJump(int[] nums) {
if(nums==null||nums.length==0) {
return false;
}else if(nums.length==1) {
return true;
}
return canJum(nums,0);
}
public static boolean canJum(int[]nums,int i) {
int num=nums[i];
if(i+num>=nums.length-1) {
return true;
}
if(num==0) {
return false;
}
boolean b=false;
for(int m=1;m<=num;m++) {
b=b||canJum(nums,i+m);
}
return b;
}
很直观的写法,也是不出意外的结果
很显然,当中做了很多的重复运算,那么我们是否可以去除这些重复运算呢,很显然可以的
public static boolean canJum1(int[]nums,int i) {
int num=nums[i];
if(i+num>=