কম্পিউটার

Python-এ K-sum জোড়ার সর্বাধিক সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের nums নামে একটি অ্যারে আছে এবং আরেকটি মান k। একটি অপারেশনে, আমরা সংখ্যা থেকে দুটি উপাদান নির্বাচন করতে পারি যার যোগফল k এর সমান এবং তাদের অ্যারে থেকে সরিয়ে ফেলতে পারি। অ্যারেতে আমরা সর্বোচ্চ কতগুলি অপারেশন করতে পারি তা আমাদের খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি nums =[8,3,6,1,5] k =9 এর মত হয়, তাহলে আউটপুট হবে 2 কারণ আমরা মুছে ফেলতে পারি [3,6] যার যোগফল 9, তারপর [8,1] মুছে ফেলুন। ] যার যোগফলও 9।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • কাউন্টার :=সংখ্যায় উপস্থিত প্রতিটি আইটেমের ফ্রিকোয়েন্সি ধরে রাখার একটি মানচিত্র
  • res :=0
  • কাউন্টারে প্রতিটি সংখ্যার জন্য, করুন
    • যদি counter[k-num] অ-শূন্য হয়, তাহলে
      • যদি num k - num এর মত না হয়, তাহলে
        • res :=res + সর্বনিম্ন কাউন্টার[num] এবং counter[k-num]
        • কাউন্টার[k-num] :=0
        • কাউন্টার[সংখ্যা] :=0
      • অন্যথায়,
        • res :=res + (counter[num] / 2) এর ভাগফল
  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

from collections import Counter
def solve(nums, k):
   counter = Counter(nums)
   res = 0
   for num in counter:
      if counter.get(k-num, 0):
         if num != k - num:
            res += min(counter[num], counter[k-num])
            counter[k-num] = 0
            counter[num] = 0
         else:
            res += int(counter[num] / 2)

   return res

nums = [8,3,6,1,5]
k = 9
print(solve(nums, k))

ইনপুট

[8,3,6,1,5], 9

আউটপুট

2

  1. পাইথন ব্যবহার করে ভাল লিফ নোড জোড়ার সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একটি পরিসরে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

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

  4. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে