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

পাইথনে স্ট্যাক বা কিউতে মুভমেন্টগুলো বৈধ কিনা তা যাচাই করা

মান লিজিয়ে আমাদের একটি বাইনারি লিস্ট আছে, যেখানে ১ ধাঁকা পUSH অপারেশন এবং ০ ধাঁকা পপ (pop) অপারেশন একটি স্ট্যাক বা কিউ-তে। আমাদের যাচাই করতে হবে অপারেশন সেটটি বৈধ কিনা।

যেমন, ইনপুট যদি nums = [1,0,1,1,0,1] হয়, তবে আউটপুট হবে True কারণ সিকোয়েন্স হল [Push,Pop,Push,Push,Pop,Push] কারণ আমরা খালি লিস্ট থেকে পপ করছি না তাই এই অপারেশনগুলো বৈধ।

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

  • push_count := 0
  • i ০ থেকে nums-এর সাইজ - ১ পর্যন্ত, করুন:
    • যদি nums[i] ১ হয়, তবে:
      • push_count := push_count + 1
    • অন্যথায়:
      • push_count := push_count - 1
    • যদি push_count < 0 হয়, তবে:
      • False রিটার্ন করুন
  • True রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:

def solve(nums):
    push_count = 0
    for i in range(len(nums)):
        if nums[i]:
            push_count += 1
        else:
            push_count -= 1
        if push_count < 0:
            return False
    return True

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

ইনপুট

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

আউটপুট

True
  1. পাইথনে বিভিন্ন ব্র্যাকেট ব্যালেন্সড ও ওয়েল-ফর্মড কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে দুটি লিস্ট একই কিনা যাচাই

  3. পাইথনে চেক করা সব লিস্ট এলিমেন্ট একই কিনা

  4. পাইথনে queue মডিউল ব্যবহার করে স্ট্যাক ও কিউ ইমপ্লিমেন্টেশন