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