मान लीजिए हमारे पास संख्याओं की एक सूची है। हमें संख्याओं के सबसे लंबे अनुक्रम की लंबाई इस प्रकार ज्ञात करनी है कि जब हम अनुक्रम से किसी संख्या को हटाते हैं, तो प्रत्येक संख्या समान संख्या में बार-बार आती है।
इसलिए, यदि इनपुट संख्याओं की तरह है =[2, 4, 4, 7, 7, 6, 6], तो आउटपुट 7 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
num_freq :=एक नया नक्शा
-
freq_freq :=एक नया नक्शा
-
diff_freq :=एक नया सेट
-
परिणाम:=1
-
प्रत्येक अनुक्रमणिका I और अंकों में मान संख्या के लिए, करें
-
cur_freq:=num_freq[num]
-
num_freq[num] :=num_freq[num] + 1
-
freq_freq[cur_freq] :=freq_freq[cur_freq] - 1
-
freq_freq[cur_freq + 1]:=freq_freq[cur_freq + 1] + 1
-
cur_freq + 1 को diff_freq में जोड़ें
-
अगर cur_freq diff_freq में है, और freq_freq[cur_freq] 0 के समान है, तो
-
diff_freq से cur_freq हटाएं
-
-
df_list :=diff_freqs के तत्वों को लेकर एक नई सूची
-
अगर df_list का आकार 1 के समान है, तो
-
परिणाम:=मैं + 1
-
-
अन्यथा जब df_list का आकार 2 के समान हो, और (जब कोई भी [|freq_freq[df_list[0]] - freq_freq[df_list[1]]|,freq_freq[df_list[0]], freq_freq[df_list[1]] ) है 1 ), और (जब [|df_list[0] -df_list[1]|, df_list[0], df_list[1]] में से कोई भी 1 है), तब
-
परिणाम:=मैं + 1
-
-
-
वापसी परिणाम
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
from collections import defaultdict class Solution: def solve(self, nums): num_freq = defaultdict(int) freq_freq = defaultdict(int) diff_freq = set() result = 1 for i, num in enumerate(nums): cur_freq = num_freq[num] num_freq[num] += 1 freq_freq[cur_freq] −= 1 freq_freq[cur_freq + 1] += 1 diff_freq.add(cur_freq + 1) if cur_freq in diff_freq and freq_freq[cur_freq] == 0: diff_freq.remove(cur_freq) df_list = list(diff_freq) if len(df_list) == 1: result = i + 1 elif ( len(df_list) == 2 and any( x == 1 for x in [ abs(freq_freq[df_list[0]] − freq_freq[df_list[1]]), freq_freq[df_list[0]], freq_freq[df_list[1]], ] ) and any(x == 1 for x in [abs(df_list[0] − df_list[1]), df_list[0], df_list[1]]) ): result = i + 1 return result ob = Solution() print(ob.solve([2, 4, 4, 7, 7, 6, 6]))
इनपुट
numbers = [2, 4, 4, 7, 7, 6, 6]
आउटपुट
7