কম্পিউটার টিউটোরিয়াল

পাইথনে Top K Frequent Elements (সর্বাধিক ফ্রিকোয়েন্ট K সংখ্যক উপাদান)


মান लीজিয়ে আমাদের কাছে একটি নন-এম্পটি ইন্টিজার অ্যারে আছে। আমাদের K-তম सर्वাধিক ফ্রিকোয়েন্ট উপাদানগুলো রিটার্ন করতে হবে। যেমন উপাদানগুলো [1,1,1,1,2,2,3,3,3] এবং k = 2 হলে ফলাফল হবে [1, 3]।

ফর্ম্যালি ফাংশনটি নিচের কাজটি করা উচিত:

  • সত্য রিটার্ন করবে যদি i, j, k অস্তিত্বে থাকে
  • যাতে arr[i] < arr[j] < arr[k] হয়, দেওয়া 0 ≤ i < j < k ≤ n-1 অথবা মিথ্যা রিটার্ন করবে।

এটি সমাধানের ধাপগুলো:

  • num_freq = খালি ম্যাপ, freq_list := খালি ম্যাপ
  • nums-এর প্রতিটি উপাদান i এর জন্য
    • যদি i num_freq-এ না থাকে, তবে num_freq[i] := 1, অন্যথায় num_freq[i] ১ বাড়ান
  • num_freq ম্যাপের প্রতিটি কী-ভ্যালু জোড়ার জন্য
    • যদি ভ্যালু freq_list-এ না থাকে, তবে freq_list[value] := [key] বানান, অন্যথায় key-কে freq_list[value] অ্যারেতে যোগ করুন
  • res := খালি লিস্ট
  • i := nums-এর দৈর্ঘ্য থেকে ০ পর্যন্ত
    • যদি i freq_list-এ থাকে, তবে freq_list[i]-এর উপাদানগুলো res-এ যোগ করুন
    • যদি res-এর দৈর্ঘ্য k-এর চেয়ে বড় বা সমান হয়, তবে ব্রেক করুন
  • result রিটার্ন করুন

নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

class Solution(object):
    def topKFrequent(self, nums, k):
        number_frequency = {}
        frequency_list = {}
        for i in nums:
            if i not in number_frequency:
                number_frequency[i] = 1
            else:
                number_frequency[i] += 1
        for key, value in number_frequency.items():
            if value not in frequency_list:
                frequency_list[value] = [key]
            else:
                frequency_list[value].append(key)
        result = []
        for i in range(len(nums), 0, -1):
            if i in frequency_list:
                result.extend(frequency_list[i])
            if len(result) >= k:
                break
        return result

ob1 = Solution()
print(ob1.topKFrequent([1,1,1,1,2,2,3,3,3], 2))

ইনপুট

[1,1,1,1,2,2,3,3,3] 2

আউটপুট

[1, 3]
  1. পাইথনে কাস্টম দৈর্ঘ্যের ম্যাট্রিক্স তৈরি

  2. পাইথনে টাপল লিস্ট থেকে টপ K ফ্রিকোয়েন্ট এলিমেন্ট বের করা (Find top K frequent elements)

  3. পাইথনে লিস্টে ক্রমাগত এলিমেন্ট জোড়া 만들기

  4. পাইথনে রেঞ্জের মধ্যে এলিমেন্ট ডিলিট করুন