题解
由于链表的头节点可能会被删除,因此我们需要额外使用一个哑节点(dummy node)指向链表的头节点。
当遍历完整个链表之后,我们返回链表的的哑节点的下一个节点 dummy.next 即可
哑节点是在处理与链表相关的操作时,设置在链表头之前的指向链表头的节点,用于简化与链表头相关的操作。
代码
package leetcode type ListNode struct { Val int Next *ListNode } func deleteDuplicates(head *ListNode) *ListNode { cnt := &ListNode{} cnt.Next = head head = cnt for head.Next != nil && head.Next.Next != nil { if head.Next.Val == head.Next.Next.Val { rmVal := head.Next.Val for head.Next != nil && head.Next.Val == rmVal { head.Next = head.Next.Next } } else { head = head.Next } } return cnt.Next }