跳躍遊戲II
阿新 • • 發佈:2019-02-18
給出一個非負整數陣列,你最初定位在陣列的第一個位置。
陣列中的每個元素代表你在那個位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達陣列的最後一個位置。
樣例
陣列中的每個元素代表你在那個位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達陣列的最後一個位置。
樣例
給出陣列A = [2,3,1,1,4],最少到達陣列最後一個位置的跳躍次數是2(從陣列下標0跳一步到陣列下標1,然後跳3步到陣列的最後一個位置,一共跳躍2次)
import java.util.Scanner; /** * 給出一個非負整數陣列,你最初定位在陣列的第一個位置。 陣列中的每個元素代表你在那個位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達陣列的最後一個位置。 樣例 給出陣列A = [2,3,1,1,4],最少到達陣列最後一個位置的跳躍次數是2(從陣列下標0跳一步到陣列下標1,然後跳3步到陣列的最後一個位置,一共跳躍2次) * @author Dell * */ public class Test117 { public static int jump(int[] A) { int jumps=0; int reach=A[0]; int i=0; while(reach<A.length-1) { int start=i; int end=reach; int temp=reach+1; for(int k=start;k<=end;k++) { if(k+A[k]>reach) { reach=k+A[k]; //每步前進的地方是下一步能達到的最遠的地方。 // i=k; } } start=temp; jumps++; } return jumps+1; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[] a=new int[n]; for(int i=0;i<n;i++) { a[i]=sc.nextInt(); } System.out.println(jump(a)); } }