Go语言实现:【剑指offer】删除链表中重复的结点

该题目来源于牛客网《剑指offer》专题。

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。

示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5

示例 2:
输入: 1->1->1->2->3
输出: 2->3

Go语言实现:

func deleteDuplicates(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }
    
    dummy := &ListNode{-1, head}
    dummy.Next = head
    slow := dummy
    fast := head
    
    for fast != nil {
        if fast.Next == nil || fast.Val != fast.Next.Val {
            if slow.Next == fast {
                slow = fast
            } else {
                slow.Next = fast.Next
            }
        }
        fast = fast.Next
    }
    return dummy.Next
}
原文地址:https://www.cnblogs.com/dubinyang/p/12099398.html