কম্পিউটার

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


ধরুন আমাদের 0s বা 1s সহ একটি বাইনারি তালিকা আছে। আমাদের k নামে আরেকটি ইনপুট আছে, আমাদের সাবলিস্টের সংখ্যা খুঁজে বের করতে হবে যার যোগফল k এর সমান।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[1, 0, 0, 1, 1, 1, 0, 1] k =3, তাহলে আউটপুট হবে 8 কারণ সাবলিস্টগুলি হল [1,0,0,1,1 ], [0,0,1,1,1], [0,0,1,1,1,0], [0,1,1,1], [0,1,1,1,0], [1,1,1], [1,1,1,0] [1,1,0,1]।

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

  • সমস্য :=একটি মানচিত্রে প্রাথমিকভাবে কী 0 এর জন্য ভ্যালি 1 থাকে
  • r_sum :=0
  • উত্তর :=0
  • সংখ্যায় প্রতিটি x এর জন্য, করুন
    • r_sum :=r_sum + x
    • উত্তর :=উত্তর + (অর্থ [r_sum - k] যদি (r_sum - k) থাকে, অন্যথায় 0)
    • সম্পর্ক[r_sum] :=1 + (সমস[r_sum - k] যদি (r_sum - k) থাকে, অন্যথায় 0)
  • উত্তর ফেরত দিন

উদাহরণ

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

def solve(nums, k):
   sums = {0: 1}
   r_sum = 0
   ans = 0

   for x in nums:
      r_sum += x
      ans += sums.get(r_sum - k, 0)
      sums[r_sum] = sums.get(r_sum, 0) + 1

   return ans

nums = [1, 0, 0, 1, 1, 1, 0, 1]
k = 3
print(solve(nums, k))

ইনপুট

[1, 0, 0, 1, 1, 1, 0, 1], 3

আউটপুট

8

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

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

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

  4. পাইথন প্রোগ্রাম তালিকায় উপাদানের যোগফল খুঁজে বের করতে