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