检查最小堆数组是否有效

芒果柠檬

我有这个功能def validate(self),它应该检查给定的数组是否是有效的最小堆。我认为可以,但是因为我的数组像[None,2,3,5]一开始就没有任何内容,所以似乎遇到了问题并给了我错误'<' not supported between instances of 'int' and 'NoneType'

如何跳过代码中的none值?

def validate(self):
    """
    Validates the heap. Returns True if the heap is a valid min-heap, and
    False otherwise.

    """

    n = self.__len__() 
    for i in range(int((n - 2) / 2) + 2):

        if self._items[2 * i + 1] < self._items[i]: 
            return False

        if (2 * i + 2 < n and self._items[2 * i + 2] > self._items[i]): 
            return False
    return True

新代码:

def validate(self):
    """
    Validates the heap. Returns True if the heap is a valid min-heap, and
    False otherwise.

    """

    n = self.__len__() 
    for i in range(int((n - 2) / 2) + 2):
        if self._items[i] != None:
            if self._items[2 * i + 1] < self._items[i]: 
                return False

        if (2 * i + 2 < n and self._items[2 * i + 2] > self._items[i]): 
            return False

错误:

  File "<doctest __main__.MinHeap.validate[8]>", line 1, in <module>
    h.validate()
  File "x-wingide-python-shell://114699264/2", line 219, in validate
TypeError: '>' not supported between instances of 'int' and 'NoneType'
kaya3

与其对照其左子节点和其右子节点(如果有的话)检查每个非叶节点,不如针对其父节点检查每个非根节点更为简单。

def validate(self):
    n = len(self._items)
    for i in range(2, n):
        if self._items[i // 2] > self._items[i]: 
            return False
    return True

您还可以对以下内容使用理解all

def validate(self):
    n = len(self._items)
    return all(self._items(i // 2) <= self._items[i] for i in range(2, n))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Scala中创建最小堆的最简单,最有效的方法是什么?

来自分类Dev

如何检查QImage是否有效?

来自分类Dev

检查连接是否有效

来自分类Dev

如何检查日期是否有效?

来自分类Dev

检查DST是否有效

来自分类Dev

检查HKEY HANDLE是否有效?

来自分类Dev

如何检查len是否有效

来自分类Dev

检查括号顺序是否有效

来自分类Dev

检查url是否有效

来自分类Dev

检查facebook会话是否有效

来自分类Dev

如何检查len是否有效

来自分类Dev

检查uri是否有效

来自分类Dev

ngRoute检查路线是否有效

来自分类Dev

如何检查SSHD是否有效?

来自分类Dev

检查日期是否有效

来自分类Dev

检查是否有效的jQuery日期

来自分类Dev

更换 SSD 以检查是否有效

来自分类Dev

在Scala中,检查数组是否单调的有效方法是什么?

来自分类Dev

是否需要检查声明为不带malloc()的C数组的有效性?

来自分类Dev

检查char数组是否不是垃圾?(有效字符)

来自分类Dev

检查字符串是否属于数组的最有效/更快的方法

来自分类Dev

检查数组是否包含一个值[以有效的方式]

来自分类Dev

检查QML文件是否具有有效的语法

来自分类Dev

如何检查所有字段是否有效?

来自分类Dev

检查pyspark中是否有NA的有效方法

来自分类Dev

如何检查所有字段是否有效?

来自分类Dev

检查QML文件是否具有有效的语法

来自分类Dev

检查数组是否具有0到n-1之间的所有整数的有效方法

来自分类Dev

如何检查有效的$ PATH目录,并输出它们以告知每个目录是否有效?