ধরুন আমাদের কাছে একটি তালিকা রয়েছে যা একটি গাদা গাছের প্রতিনিধিত্ব করে। আমরা জানি হিপ একটি সম্পূর্ণ বাইনারি গাছ। আমাদের উপাদানগুলি সর্বাধিক গাদা তৈরি করছে কিনা তা পরীক্ষা করতে হবে। আমরা সর্বাধিক হিপের জন্য জানি প্রতিটি উপাদান তার উভয় সন্তানের চেয়ে বড়।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[8, 6, 4, 2, 0, 3], তাহলে আউটপুটটি True হবে কারণ, সমস্ত উপাদান তাদের সন্তানদের থেকে বড়৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=সংখ্যার আকার
- আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
- m :=i * 2
- সংখ্যা :=সংখ্যা[i]
- যদি m + 1
- যদি num
- মিথ্যে ফেরত দিন
- যদি num
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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 nums = [8, 6, 4, 2, 0, 3] print(solve(nums))
ইনপুট
[8, 6, 4, 2, 0, 3]
আউটপুট
True