Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में समतुल्य आवृत्तियों के साथ एक अनुक्रम का पता लगाने का कार्यक्रम

मान लीजिए हमारे पास संख्याओं की एक सूची है। हमें संख्याओं के सबसे लंबे अनुक्रम की लंबाई इस प्रकार ज्ञात करनी है कि जब हम अनुक्रम से किसी संख्या को हटाते हैं, तो प्रत्येक संख्या समान संख्या में बार-बार आती है।

इसलिए, यदि इनपुट संख्याओं की तरह है =[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

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्षों की संख्या 0 से n - 1 है। ग्राफ अप्रत्यक्ष है और प्रत्येक किनारे का वजन है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को पार कर सकता

  1. टुपल्स की सूची में सकारात्मक तत्वों वाले टुपल्स को खोजने के लिए पायथन प्रोग्राम

    जब टुपल्स की सूची में सकारात्मक तत्वों के साथ टुपल्स खोजने की आवश्यकता होती है, तो सूची समझ और सभी ऑपरेटर का उपयोग किया जाता है। उदाहरण नीचे उसी का एक प्रदर्शन है - my_tuple = [(14, 15, 19), (-32, 23, 32), (-31, 15, 63), (46, 68)] print("The list is :") print(my_tuple) my_result = [sub

  1. यह पता लगाने के लिए कार्यक्रम कि क्या दो अभिव्यक्ति पेड़ पायथन का उपयोग करने के बराबर हैं

    मान लीजिए, हमें दो व्यंजक वृक्ष दिए गए हैं। हमें एक प्रोग्राम लिखना है जो दो एक्सप्रेशन ट्री की जांच करता है और यह निर्धारित करता है कि एक्सप्रेशन ट्री समान मान उत्पन्न करते हैं या नहीं। दो एक्सप्रेशन ट्री हमें इन-ऑर्डर तरीके से प्रदान किए जाते हैं और यदि वे मेल खाते हैं तो हम एक ट्रू वैल्यू लौटाते