কম্পিউটার

পাইথনে কি ম্যাক্স হিপ?


ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা আছে, আমাদের পরীক্ষা করতে হবে এটি একটি maxheap প্রতিনিধিত্ব করে কিনা। আমরা এই নিয়মগুলি অনুসরণ করব -

  • সংখ্যা[i] =সংখ্যা[2*i + 1] যখন 2*i + 1 সীমার মধ্যে থাকে
  • সংখ্যা[i] =সংখ্যা[2*i + 2] যখন 2*i + 2 সীমার মধ্যে থাকে

সুতরাং, যদি ইনপুটটি [5, 3, 4, 1, 2] এর মত হয়, তাহলে আউটপুট হবে True

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

  • আমি 0 থেকে (সংখ্যার আকার)/2 রেঞ্জের জন্য,
      করুন
    • যদি nums[i]>=nums[2*i+1] সত্য না হয়, তাহলে
      • মিথ্যে ফেরত দিন
    • যদি i*2+2 <=(সংখ্যার আকার)-1, তাহলে
      • যদি nums[i]>=nums[2*i+2] সত্য না হয়, তাহলে
        • মিথ্যে ফেরত দিন
  • সত্য ফেরান

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

উদাহরণ

class Solution:
   def solve(self, nums):
      for i in range(len(nums)//2):
         if not nums[i] >= nums[2*i+1]:
            return False
         if i*2+2 <= len(nums)-1:
            if not nums[i] >= nums[2*i+2]:
               return False
      return True
ob = Solution()
nums = [5, 3, 4, 1, 2]
print(ob.solve(nums))

ইনপুট

[5, 3, 4, 1, 2]

আউটপুট

True

  1. হিপ চেক করার প্রোগ্রামটি পাইথনে সর্বোচ্চ হিপ তৈরি করছে নাকি নয়

  2. হিপ সাজানোর জন্য পাইথন প্রোগ্রাম

  3. পাইথন হিপ কিউ অ্যালগরিদম

  4. পাইথন ইটারেটর প্রকার