Giả sử chúng ta có một danh sách các số được gọi là num và chúng ta phải tìm độ dài của danh sách con liền kề dài nhất mà tất cả các phần tử của nó là duy nhất.
Vì vậy, nếu đầu vào giống như nums =[6, 2, 4, 6, 3, 4, 5, 2], thì đầu ra sẽ là 5, vì danh sách dài nhất các phần tử duy nhất là [6, 3, 4, 5 , 2].
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
head:=0, dct:=a new map
-
max_dist:=0
-
đối với mỗi chỉ mục i và num phần tử trong nums, thực hiện
-
nếu num nằm trong dct và dct [num]> =head thì
-
head:=dct [num] + 1
-
-
dct [num]:=i
-
nếu tôi - head + 1> max_dist, thì
-
max_dist:=i - head + 1
-
-
-
trả về max_dist
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
[6, 2, 4, 6, 3, 4, 5, 2]
Đầu ra
5