สมมติว่าเรามีรายการที่แสดงต้นไม้ฮีป (heap tree) ฮีปคือต้นไม้ไบนารีสมบูรณ์ (complete binary tree) เราต้องตรวจสอบว่าสมาชิกจัดเรียงเป็น Max Heap หรือไม่ ตามนิยามของ Max Heap ทุกสมาชิกต้องมีค่ามากกว่าลูกทั้งสองของมัน
เช่น ถ้าอินพุตคือ nums = [8, 6, 4, 2, 0, 3] ผลลัพธ์จะเป็น True เพราะทุกสมาชิกมีค่ามากกว่าลูกของมัน
ขั้นตอนการแก้ปัญหา
n := ขนาดของ nums- สำหรับ
iในช่วง0ถึงn-1:m := i * 2num := nums[i]- ถ้า
m + 1 < nและnum < nums[m + 1]คืนค่าFalse - ถ้า
m + 2 < nและnum < nums[m + 2]คืนค่าFalse
- คืนค่า
True
ตัวอย่างการใช้งาน
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