Cho mảng nums biểu diễn heap (cây nhị phân hoàn chỉnh). Kiểm tra có phải max heap không (mỗi nút lớn hơn hoặc bằng cả hai con).
Ví dụ: nums=[8,6,4,2,0,3] → True.
Giải thuật (Kiểm tra tính chất heap)
- Với mỗi chỉ số
i, con trái =2*i+1, con phải =2*i+2(0-based) - Kiểm tra
nums[i] >= nums[left]vànums[i] >= nums[right](nếu con tồn tại) - Nếu vi phạm →
False, hết vòng lặp →True
Ví dụ triển khai
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
print(solve([8, 6, 4, 2, 0, 3]))
Đầu vào
[8, 6, 4, 2, 0, 3]
Đầu ra
True