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

পাইথনে হিপ লিস্ট ম্যাক্স হিপ কিনা চেক করা

একটি লিস্ট হিপ ট্রি রিপ্রেজেন্ট করে (কমপ্লিট বাইনারি ট্রি)। প্রতিটি নোড তার দুটি চাইল্ড থেকে বড় কিনা চেক করে ম্যাক্স হিপ ভ্যালিডেশন করুন।

ইনপুট উদাহরণ

nums = [8, 6, 4, 2, 0, 3]

আউটপুট: True

অ্যালগরিদম

অ্যারে রিপ্রেজেন্টেশনে পেরেন্ট i-এর চাইল্ড: 2*i+1 এবং 2*i+2। সব পেরেন্টের জন্য চেক করুন nums[i] >= nums[left] এবং nums[i] >= nums[right]।

পাইথন কোড

def solve(nums):
    n = len(nums)
    for i in range(n):
        m = i * 2
        num = nums[i]
        if m + 1 < n:
            if num < nums[m + 1]:
                return False
        if m + 2 < n:
            if num < nums[m + 2]:
                return False
    return True

# টেস্ট
print(solve([8, 6, 4, 2, 0, 3]))  # True

ব্যাখ্যা

নোট: কোডে m = i*2 ব্যবহার করা হয়েছে, কিন্তু স্ট্যান্ডার্ড হিপে 2*i+1। এই কোড ১-বেসড ইন্ডেক্সিং ধরে বা বাগ আছে। সঠিক কোড:

def solve(nums):
    n = len(nums)
    for i in range(n):
        left = 2*i + 1
        right = 2*i + 2
        if left < n and nums[i] < nums[left]:
            return False
        if right < n and nums[i] < nums[right]:
            return False
    return True
  1. পাইথন প্রোগ্রাম - পয়েন্টগুলোর কনকেভ পলিগন গঠন করে কিনা তা যাচাই করুন

  2. পাইথন প্রোগ্রাম - পয়েন্টগুলোর কনভেক্স হাল গঠন করে কিনা তা যাচাই করুন

  3. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম

  4. পাইথনে লিস্ট খালি কিনা যাচাই করার প্রোগ্রাম