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