You are given an integer array nums.
You are initially positioned at the array's first index,
and each element in the array represents your maximum jump length at that position.
Return true if you can reach the last index, or false otherwise.
당신이 그 위치에서 점프할수 있는 최대의 길이의 정보를 가지는 배열이 주어집니다.
첫번째 위치에서 마지막 위치까지 점프로 이동할수 있는지의 여부를 리턴하세요.
Input: nums = [2,3,1,1,4]
Output: true
Explanation: 0번에서 1번으로 점프 > 1번에서 마지막까지 점프
문제를 처음 봤을때는 처음부터 하나하나씩 확인해 갈수 있는 위치를 찾아보는게 어떨까 했으나, 그럴 경우 시간이 너무 든다.
다시 생각해보니 뒤에서부터 찾아보면 어떨까라는 생각이 들었는데, 이를 통해 제안한 방법은 아래와 같다.
class Solution:
def findJump(self, nums: List[int], point: int) -> int:
source = point - 1
while source >= 0:
distance = point - source
if nums[source] >= distance: return source
source -= 1
return -1
def canJump(self, nums: List[int]) -> bool:
start = len(nums)-1
while start != 0:
start = self.findJump(nums, start)
if start == -1: return False
return True