leetcode 每日一题 82. 删除排序链表中的重复元素 II
Posted nil_f
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 82. 删除排序链表中的重复元素 II相关的知识,希望对你有一定的参考价值。
双指针
思路:
创建一个空的头结点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的主要内容,如果未能解决你的问题,请参考以下文章
《LeetCode之每日一题》:288.删除排序链表中的重复元素
《LeetCode之每日一题》:288.删除排序链表中的重复元素
《LeetCode之每日一题》:98.删除排序链表中的重复元素
《LeetCode之每日一题》:99.删除排序链表中的重复元素 II