标签: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