题解 | #删除有序链表中重复的元素-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指针,以进行下一轮的判断。这样,代码应该能够正确地处理重复的元素,并返回一个只包含不重复元素的新链表。

全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务