-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathanswer.py
49 lines (42 loc) · 1.4 KB
/
answer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/python3
#------------------------------------------------------------------------------
# Brute Force O(n^2)
#------------------------------------------------------------------------------
class Solution(object):
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
if len(nums) <= 1:
return True
valid = [len(nums)-1]
done = []
while valid:
curr = valid.pop(0)
if curr not in done:
done.append(curr)
valid += self.getList(nums, curr)
if 0 in valid:
return True
return False
def getList(self, nums, idx):
result = []
for i in range(0, idx):
if nums[i] >= (idx - i):
result.append(i)
return result
#------------------------------------------------------------------------------
# Optimized O(n)
#------------------------------------------------------------------------------
class Solution(object):
def canJump(self, nums):
if not nums:
return False
curr = len(nums) - 1
for i in range(len(nums)-1, -1, -1):
if nums[i] >= curr - i:
curr = i
return True if not curr else False
#------------------------------------------------------------------------------
#Testing