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

পাইথনে বাইনারি অ্যারে-এ 0 কে 1 রিপ্লেস করে সর্বোচ্চ ১-র সিকোয়েন্স বের করা (সেট-২)

ধরা যাক একটি বাইনারি অ্যারে আছে। আমাদের এমন একটি 0 এর পজিশন বের করতে হবে যেটিকে 1 দিয়ে রিপ্লেস করলে ১-র সর্বোচ্চ দীর্ঘ সতত সিকোয়েন্স পাওয়া যাবে।

ইনপুট: [1,1,0,0,1,0,1,1,1,1,0,1,1] → আউটপুট 10 (সেরি হবে [1,1,0,0,1,0,1,1,1,1,1,1,1])।

সমাধানের ধাপসমূহ

  • i=0, n=len(A), count_left=0, count_right=0, max_i=-1, last_i=-1, count_max=0
  • while i < n:
    • যদি A[i]==1: count_right++
    • অন্যথায়:
      • যদি last_i != -1 এবং count_right+count_left+1 > count_max: count_max আপডেট, max_i=last_i
      • last_i=i; count_left=count_right; count_right=0
    • i++
  • লুপ শেষে last_i চেক করে ফাইনাল আপডেট
  • return max_i

উদাহরণ

def find_max_one_index(A):
    i = 0; n = len(A)
    count_left = 0; count_right = 0
    max_i = -1; last_i = -1; count_max = 0
    while i < n:
        if A[i] == 1:
            count_right += 1
        else:
            if last_i != -1:
                if count_right + count_left + 1 > count_max:
                    count_max = count_left + count_right + 1
                    max_i = last_i
            last_i = i
            count_left = count_right
            count_right = 0
        i += 1
    if last_i != -1:
        if count_left + count_right + 1 > count_max:
            count_max = count_left + count_right + 1
            max_i = last_i
    return max_i
A = [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1]
print(find_max_one_index(A))

ইনপুট

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

আউটপুট

10
  1. পাইথন - বিটোনিক সিকোয়েন্সে বিটোনিক পয়েন্ট খুঁজে বের করা (বাইনারি সার্চ)

  2. পাইথন - মার্জ সোর্টের ঠিক K সংখ্যক রিকারসিভ কল দিয়ে অ্যারে তৈরি করা

  3. পাইথনে লংগেস্ট কনসেকিউটিভ সিকোয়েন্স

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