Max Heap是Python吗?
假设我们有一个称为nums的数字列表,我们必须检查它是否代表最大堆。我们将遵循这些规则-
当2*i+1在范围内时,nums[i]=nums[2*i+1]
当2*i+2在范围内时,nums[i]=nums[2*i+2]
因此,如果输入类似于[5,3,4,1,2],则输出为True
为了解决这个问题,我们将遵循以下步骤-
对于范围在0到(数字大小)/2的i
如果nums[i]>=nums[2*i+2]不为真,则
返回False
返回False
如果nums[i]>=nums[2*i+1]不为真,则
如果i*2+2<=(数字大小)-1
返回True
让我们看下面的实现以更好地理解-
示例
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