কম্পিউটার

পাইথনে সমতুল্য ফ্রিকোয়েন্সি সহ একটি সিকোয়েন্স খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে। আমাদের সংখ্যার দীর্ঘতম ক্রমটির দৈর্ঘ্য খুঁজে বের করতে হবে যাতে আমরা যখন ক্রম থেকে একটি সংখ্যা মুছে ফেলি, তখন প্রতিটি সংখ্যা একই সংখ্যক বার আসে।

সুতরাং, ইনপুট যদি সংখ্যার মত হয় =[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

    • diff_freq

      -এ cur_freq + 1 যোগ করুন
    • যদি cur_freq হয় diff_freq এ, এবং freq_freq[cur_freq] 0 এর মত হয়, তাহলে

      • diff_freq

        থেকে cur_freq মুছুন
    • df_list :=diff_freqs

      এর উপাদান গ্রহণ করে একটি নতুন তালিকা
    • যদি df_list এর আকার 1 এর মতো হয়, তাহলে

      • ফলাফল:=i + 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 হয়), তারপর

      • ফলাফল:=i + 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. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে কোন দ্বন্দ্ব ছাড়াই সেরা দল খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম টিপলের তালিকায় ইতিবাচক উপাদান সহ Tuples খুঁজে বের করতে

  4. পাইথন ব্যবহার করে দুটি এক্সপ্রেশন ট্রি সমতুল্য কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম