原题
https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/description/
思路
虚拟节点 + 遍历
复杂度
时间:O(n)
空间:O(n)
Python代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
dummy = cur = ListNode(0, head)
while head:
# 存在重复数字, 移动指针
if head.next and head.val == head.next.val:
while head.next and head.val == head.next.val:
head = head.next
cur.next = head.next
else:
cur.next = head
cur = cur.next
head = head.next
return dummy.next
Go代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteDuplicates(head *ListNode) *ListNode {
dummy := &ListNode{0, head}
cur := dummy
for head != nil {
// 存在重复数字, 移动指针
if head.Next != nil && head.Val == head.Next.Val {
for head.Next != nil && head.Val == head.Next.Val {
head = head.Next
}
cur.Next = head.Next
} else {
cur.Next = head
cur = cur.Next
}
head = head.Next
}
return dummy.Next
}
248

被折叠的 条评论
为什么被折叠?



