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]
, return true
.
A = [3,2,1,0,4]
, return false
.
解法一: 动态规划,能过小数据,大数据过不了
class Solution:
# @param A, a list of integers
# @return a boolean
def canJump(self, A):
log = [True];
for i in range(0,len(A)):
log.append(False);
for i in range(0,len(A)):
if log[i]==True:
for j in range(0, A[i]+1 ):
if i+j
log[i+j] = True;
else :
break;
return log[len(A)-1];
解法二:能过大数据
class Solution:
# @param A, a list of integers
# @return a boolean
log = [];
check = [];
def gen(self, A, n):
if self.log[n]==True:
return True;
if self.check[n]==True:
return False;
self.check[n] = True;
for i in range(1, n+1):
if A[n-i]>=i:
self.gen(A, n-i);
if self.log[n-i] == True:
self.log[n] = True;
return True;
return False
def canJump(self, A):
self.log = [];
self.check = [];
self.log.append(True);
self.check.append(True);
for i in range(0,len(A)):
self.log.append(False);
self.check.append(False);
return self.gen(A, len(A)-1);