각 숫자가 우리가 할 수 있는 최대 점프 수를 나타내는 nums라는 숫자 목록이 있다고 가정합니다. 인덱스 0에서 시작하여 마지막 인덱스에 도달할 수 있는지 여부를 확인해야 합니다.
따라서 입력이 nums =[2,5,0,2,0]과 같으면 인덱스 0에서 1로 점프한 다음 인덱스 1에서 끝으로 점프할 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따르겠습니다-
-
n :=숫자 크기
-
arr :=n 크기의 배열이고 false로 채우기
-
arr[n - 1] :=참
-
범위 n - 2에서 0의 i에 대해 1만큼 감소, 수행
-
arr[i] :=arr[from index i + 1 to i + nums[i]] 중 하나라도 true이면 true
-
-
반환 arr[0]
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, nums): n = len(nums) arr = [False] * n arr[n - 1] = True for i in range(n - 2, -1, -1): arr[i] = any(arr[i + 1 : i + nums[i] + 1]) return arr[0] ob = Solution() nums = [2,5,0,2,0] print(ob.solve(nums))
입력
[2,5,0,2,0]
출력
True