-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjump_game.py
More file actions
53 lines (40 loc) · 1.37 KB
/
jump_game.py
File metadata and controls
53 lines (40 loc) · 1.37 KB
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
50
51
52
53
"""
55. Jump Game
Time Complexity: O(n)
Space Complexity: O(1)
"""
from typing import List
class Solution:
def canJump(self, nums: List[int]) -> bool:
max_reach = 0
for i in range(len(nums)):
if i > max_reach:
return False
max_reach = max(max_reach, i + nums[i])
if max_reach >= len(nums) - 1:
return True
return True
# Test cases
if __name__ == "__main__":
solution = Solution()
# Example 1
nums1 = [2, 3, 1, 1, 4]
print(f"Example 1: {solution.canJump(nums1)}") # Expected: True
# Example 2
nums2 = [3, 2, 1, 0, 4]
print(f"Example 2: {solution.canJump(nums2)}") # Expected: False
# Edge case: single element
nums3 = [0]
print(f"Example 3: {solution.canJump(nums3)}") # Expected: True
# Edge case: can't move from start
nums4 = [0, 1]
print(f"Example 4: {solution.canJump(nums4)}") # Expected: False
# Edge case: large jump at start
nums5 = [5, 1, 1, 1, 1]
print(f"Example 5: {solution.canJump(nums5)}") # Expected: True
# Edge case: zeros in middle but reachable
nums6 = [2, 0, 0]
print(f"Example 6: {solution.canJump(nums6)}") # Expected: True
# Edge case: multiple paths
nums7 = [2, 5, 0, 0]
print(f"Example 7: {solution.canJump(nums7)}") # Expected: True