📌  相关文章
📜  从列表中删除所有大于 x 的节点(1)

📅  最后修改于: 2023-12-03 15:06:33.865000             🧑  作者: Mango

从列表中删除所有大于 x 的节点

需要从一个链表中删除所有大于给定值 x 的节点。可以通过遍历整个链表来找出每个值大于 x 的节点,并删除它们。这个过程可以使用一个指针来完成。当下一个节点的值大于 x 时,只需要更新指针,将当前节点直接指向下一个节点。

以下是一个实现删除链表中大于 x 的节点的 Python 代码片段:

def remove_greater_than(head, x):
    dummy = ListNode(-1, head)
    prev, curr = dummy, head
    while curr:
        if curr.val > x:
            prev.next = curr.next
        else:
            prev = curr
        curr = curr.next
    return dummy.next

该函数接受两个参数:链表头节点 head 和数值 x。我们首先创建一个假头节点 dummy,以便我们可以处理头节点的特殊情况,即如果头节点的值大于 x,我们需要将头节点直接移除。

接下来,我们设置两个指针 prev 和 curr,它们分别指向假头节点和头节点。我们遍历整个链表,如果当前节点的值大于 x,则将 prev 的 next 指向 curr 的下一个节点,从而将当前节点移除。否则,我们只需要更新 prev 和 curr 的值,以便下一次迭代使用它们。

最后,我们返回链表的头节点。该函数的时间复杂度是 O(n),其中 n 是链表的长度,因为我们遍历了整个链表一次。