Topic:
Given an array of non-negative integers, you is initially positioned at the first index of the array.
Each element of the array represents your maximum jump length is at that position.
Determine if you is able to reach the last index.
For example:
A = [2,3,1,1,4], return true.
A = [3,2,1,0,4], return false.
Idea: Think like this, as long as is positive, can go straight forward, the only obstacle is 0, as long as can jump over 0 on the line. So every time we meet 0 o'clock, we can see the maximum number of steps before we jump over it.
PackageDP; Public classJumpgame { Public BooleanCanjump (int[] nums) { intLen =nums.length; intMax = 0; for(inti = 0; i < len-1; ++i) {if(i + nums[i] >max) Max= i +Nums[i]; if(Nums[i] = = 0 && i >=max)//is 0, before the maximum number of steps cannot skip it returns falsereturn false; } returnMax >= len-1; } Public Static voidMain (string[] args) {//TODO auto-generated Method Stub int[] nums1 = {2,3,1,1,4}; int[] Nums2 = {0,3,2}; Jumpgame J=NewJumpgame (); System.out.println (J.canjump (NUMS1)); System.out.println (J.canjump (NUMS2)); }}
Leetcode-jump Game