假设我们有一个称为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