package com.company;
import org.junit.jupiter.api.Test;
public class LeetCodeAll {
/*
有n块石头分别在x轴的0,1,...,n-1位置,一致青蛙在石头0,想跳到石头n-1,如果青蛙
在第i块石头上,它最多可以向右跳距离ai,问青蛙能否跳到石头n-1?
示例1:
Input:a=[2,3,1,1,4]
Output:True
示例2:
Input:a=[3,2,1,0,4]
Output:False*/
public static Boolean jump(int A[]){
if(A == null|| A.length == 0){
return false;
}
int n=A.length;
boolean f[]=new boolean[n];
f[0]=true;
for(int j=1;j<n;j++){
//判断当前第J个石头否是否能被跳到,初始false
f[j]=false;
//对J之前的每个石头轮询一遍 需要满足2个条件 1>之前的第i个为true即能被跳到f[i]=true 2> 第i个石头能跳跃的最远距离大于j,第i石头序位+i石头数值 即 i+A[i]>=j
for(int i=0;i<j;i++){
if(f[i]&&A[i]+i>=j){
f[j]=true;
}
}
}
return f[n-1];
}
public static void main(String[] args) {
int a[]={2,0,1,4};
Boolean result = jump(a);
System.out.println("result:"+result);
System.out.println("result:"+result);
}
}