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

পাইথনে মিন এবং ম্যাক্স এলিমেন্টের যোগফল k-এর চেয়ে ছোট এমন নন-এম্পটি সাবসেট গণনা করার প্রোগ্রাম


মান ল করুন nums নামের একটি সংখ্যার তালিকা এবং k নামের একটি মান, আমাদের এমন নন-এম্পটি সাবসেট S-এর সংখ্যা খুঁজে বের করতে হবে যাতে min(S) + max(S) <= k। সাবসেটগুলো মাল্টিসেট হিসেবে বিবেচনা করতে হবে। তাই সাবসেটে ডুপ্লিকেট মান থাকতে পারে কারণ সেগুলো লিস্টের নির্দিষ্ট এলিমেন্ট বোঝায়, মান নয়।

যদি ইনপুট হয় nums = [2, 2, 5, 6], k = 7, তবে আউটপুট হবে ৬, কারণ নিচের সাবসেটগুলো বানানো যায়: [2], [2], [2, 2], [2, 5], [2, 5], [2, 2, 5]।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • N := A-এর আকার
  • A তালিকাটি সাজান
  • ans := 0
  • j := N - 1
  • i কে ০ থেকে N পর্যন্ত লুপ চালান:
    • যখন j এবং A[i] + A[j] > K: j := j - 1
    • যদি i <= j এবং A[i] + A[j] <= K: ans := ans + 2^(j - i)
  • ans ফেরত দিন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

class Solution:    def solve(self, A, K):       N = len(A)       A.sort()       ans = 0       j = N - 1       for i in range(N):          while j and A[i] + A[j] > K:             j -= 1             if i <= j and A[i] + A[j] <= K:                ans += 1 << (j - i)       return ans ob = Solution() nums = [2, 2, 5, 6] k = 7 print(ob.solve(nums, k))

ইনপুট

[2, 2, 5, 6]

আউটপুট

6

  1. পাইথনে বাইনারি ট্রিতে যেসব পথের যোগফল k তাদের সংখ্যা গুনার প্রোগ্রাম

  2. পাইথনে অ্যারে থেকে সর্বোচ্চ এলিমেন্ট বের করা

  3. পাইথনে min() এবং max() ফাংশন ব্যবহার

  4. পাইথন প্রোগ্রাম: টাপলে একটি এলিমেন্টের ঘটনার সংখ্যা গণনা