码迷,mamicode.com
首页 > 编程语言 > 详细

leetcode 每日一题 82. 删除排序链表中的重复元素 II

时间:2020-06-15 12:15:09      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:def   mamicode   leetcode   one   idt   color   创建   span   alt   

技术图片

双指针

思路:

创建一个空的头结点dummy,头节点的下一节点是head。用cur指向当前要处理去重的节点,pre指向上一个完成去重的节点。初始状态pre = dummy,cur = pre.next。开始对cur进行处理,如果cur.next.val == cur.val,while遍历更新cur指向的节点找到最后一个和cur.val相同的节点。然后让pre下一个指向的节点变成最后一个和cur.val相同节点下一个指向的节点,这样达到对cur.val相同的节点的去重操作,也即pre.next = cur.next,cur = cur.next(这里要注意的是,pre本身指向的并没有改变),继续进行遍历去重操作。如果cur.next.val != cur.val,则更新pre和cur的值,即pre = pre.next,cur = cur.next。去重结束后,返回dummy指向的下一节点即可。

例如: 1->2->3->3->4->4->5

技术图片

 

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

 

代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        dummy = ListNode(-1)
        dummy.next = head
        pre = dummy
        cur = pre.next
        while cur and cur.next:
            if cur.val == cur.next.val:
                while cur.next and cur.val ==cur.next.val:
                    cur = cur.next
                pre.next = cur.next
                cur = cur.next
            else:
                pre = pre.next
                cur = cur.next
        return dummy.next

 

leetcode 每日一题 82. 删除排序链表中的重复元素 II

标签:def   mamicode   leetcode   one   idt   color   创建   span   alt   

原文地址:https://www.cnblogs.com/nilhxzcode/p/13129843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!