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

Python에서 가장 긴 고유한 하위 목록의 길이를 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있고 모든 요소가 고유한 가장 긴 연속 하위 목록의 길이를 찾아야 한다고 가정합니다.

따라서 입력이 nums =[6, 2, 4, 6, 3, 4, 5, 2]와 같으면 고유 요소의 가장 긴 목록이 [6, 3, 4, 5이므로 출력은 5가 됩니다. , 2].

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 머리 :=0, dct :=새 지도

  • max_dist :=0

  • nums의 각 인덱스 i 및 요소 num에 대해 수행

    • num이 dct에 있고 dct[num]>=head에 있으면

      • 머리 :=dct[숫자] + 1

    • dct[숫자] :=i

    • i - head + 1> max_dist이면

      • max_dist :=i - 머리 + 1

  • max_dist 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, nums):
      head = 0
      dct = {}
      max_dist = 0
      for i, num in enumerate(nums):
         if num in dct and dct[num] >= head:
            head = dct[num] + 1
         dct[num] = i
         if i - head + 1 > max_dist:
            max_dist = i - head + 1
   return max_dist
ob = Solution()
nums = [6, 2, 4, 6, 3, 4, 5, 2]
print(ob.solve(nums))

입력

[6, 2, 4, 6, 3, 4, 5, 2]

출력

5