题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @return ListNode类
#
class Solution:
    def deleteDuplicates(self , head: ListNode) -> ListNode:
        # write code here
        dummy_head = ListNode(-1000000000000)
        dummy_head.next = head

        if head is None:
            return None

        pre, cur, nxt = dummy_head, head, head.next

        while cur:
            if nxt and cur.val == nxt.val:
                while nxt and cur.val == nxt.val:
                    nxt = nxt.next
                pre.next = nxt
            else:
                pre = cur
            cur = nxt
            if nxt:
                nxt = nxt.next

        return dummy_head.next

使用三个指针pre,cur,nxt分别记录,nxt 指针会一直向前移动,直到找到与cur指针值不等的节点或者链表的末尾。然后更新pre指针的next为nxt,从而删除所有重复的节点。同时,每次循环结束时,cur指针都会更新为nxt指针,以进行下一轮的判断。这样,代码应该能够正确地处理重复的元素,并返回一个只包含不重复元素的新链表。

全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务