1.題目描述
2.思路
只要是在最大覆蓋范圍覆蓋了,就是覆蓋了。
局部最優:每遍歷一個元素取它最大的覆蓋范圍
全局最優:在這個序列里,可以得到最大的覆蓋范圍。如果覆蓋范圍能達到最后一個元素,就是全局最優
(1)數組的長度是1,一開始在起始位置,本質上也是在終止位置,所以可以返回true。
3.代碼實現
public class H55 {public boolean canJump(int[] nums) {//覆蓋范圍的下標默認從0開始(起點)int coverIndex=0;//如果數組只有一個元素,說明該元素既是起點,也是終點if(nums.length==1)//也就是不用跳{return true;}for(int i=0;i<nums.length&&i<=coverIndex;i++){//最信的覆蓋范圍:目前下標去加上自己對應元素的值。//coverIndex代表最大的覆蓋范圍coverIndex=Math.max(i+nums[i],coverIndex);//如果cover到達終點,或者跳出比終點還遠的位置if(coverIndex>=nums.length-1)return true;}//如果一直達到不了終點,游戲終止return false;}public static void main(String[] args){H55 test=new H55();int[] nums={2,3,1,1,4};boolean res=test.canJump(nums);System.out.print(res);}
}