/
有n块石头分别在x轴的0,1,2….n-1位置
一只青蛙在0处,想跳到n-1处,
如果青蛙在第i块石头上,他能跳最大距离ai
问是否能跳到
初始化f[0]=false
计算f[1]、f[2]、f[3]….f[n-1]
返回f[n-1]
eg:
输入:a=[3,3,1,1,4] 输出:True
输入:a=[3,2,1,0,4] 输出:False
时间复杂度O(N^2) 空间复杂度O(N)
/
//存在型动态规划
public class Solution2 {
public static boolean canJump(int[] A){
if(A==null||A.length==0)
return false;
int n=A.length;
boolean[] f=new boolean[n];//建立辅助空间
f[0]=true;
for(int i=1;i<n;i++){
f[i]=false;//初始化为false
for(int j=0;j<i;j++) {//从第0个石头开始
if( f[j] && j+A[j]>=i ) {//跳最大距离ai
f[i] = true;
break;
}
}
}
return f[n-1];//下标从0开始
}
public static void main(String[] args) {
int[] A={3,3,1,1,4};//n=A.length
System.out.println(canJump(A));
}
}