मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, और हमें सबसे लंबी सन्निकट सबलिस्ट की लंबाई ढूंढनी है जहां सभी तत्व अद्वितीय हों।
उदाहरण के लिए, यदि इनपुट nums = [6, 2, 4, 6, 3, 4, 5, 2] है, तो आउटपुट 5 होगा, क्योंकि अद्वितीय तत्वों की सबसे लंबी सूची [6, 3, 4, 5, 2] है।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
head := 0,dct := एक नया मैपआरंभ करें।max_dist := 0सेट करें।प्रत्येक इंडेक्स
iऔर तत्वnumके लिएnumsमें:यदि
numdctमें है औरdct[num] >= head, तोhead := dct[num] + 1।dct[num] := iअपडेट करें।यदि
i - head + 1 > max_dist, तोmax_dist := i - head + 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