本文共 1175 字,大约阅读时间需要 3 分钟。
要解决删除排序链表中重复节点的问题,可以使用双指针法,记录已访问过的节点,删除重复节点。以下是详细的解决方案:
dummy_head,使其下一个指向原链表的头节点。pre和cur,分别指向虚拟头节点和链表头节点。cur指针到最后一个重复节点,删除重复节点。pre和cur指针,继续遍历剩下的节点。class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: dummy_head = ListNode(0) dummy_head.next = head pre = dummy_head cur = head while cur: if cur.next and cur.val == cur.next.val: while cur.next and cur.val == cur.next.val: cur = cur.next pre.next = cur.next pre = pre.next cur = cur.next else: pre = pre.next cur = cur.next return dummy_head.next
dummy_head用于处理原始链表头节点的重复,确保删除操作正确无误。pre指向虚拟头节点,cur指向链表头节点。cur指针到最后一个重复节点,然后删除重复节点。pre和cur指针,继续处理下一个节点。通过这种方法,可以高效地删除链表中的重复节点,时间复杂度为O(n),空间复杂度为O(1)。
转载地址:http://sdjg.baihongyu.com/