Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 인덱스 0에서 마지막 위치에 도달할 수 있는지 확인하는 프로그램

<시간/>

각 숫자가 우리가 할 수 있는 최대 점프 수를 나타내는 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