Jump Game
今天是一道有關貪婪算法的題目,來自LeetCode#55,難度為Medium,Acceptance為27.2%。
題目如下
Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Determine if you are able to reach the last index.
For example:
A = [2,3,1,1,4]
, returntrue
.
A = [3,2,1,0,4]
, returnfalse
.
思路如下
該題中只需要求能不能到達最后一個元素,而不必求最少的步數,相對較為簡單。只要按照貪婪算法,每到下一個元素求由該元素開始的最遠的元素i + nums[i]
即可。
代碼如下
java版
public class Solution {
public boolean canJump(int[] nums) {
int reach = 0;
for(int i = 0; i <= reach && reach < nums.length; i++) {
reach = Math.max(reach, i + nums[i]);
}
return reach >= nums.length - 1;
}
}
C++版
bool canJump(int A[], int n) {
int i = 0;
for (int reach = 0; i < n && i <= reach; ++i)
reach = max(i + A[i], reach);
return i == n;
}
關注我
該公眾號會每天推送常見面試題,包括解題思路是代碼,希望對找工作的同學有所幫助
image