leetcode-链表-删除链表中的重复元素

69 阅读1分钟

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

输入: head = [1,2,3,3,4,4,5]
输出: [1,2,5]

第一种解法

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteDuplicates(head *ListNode) *ListNode {
   if head == nil || head.Next == nil {
        return head
    }

    tmp := &ListNode{Next: head}
    cur := tmp
    for cur.Next != nil && cur.Next.Next != nil {
        val := cur.Next.Val
        if cur.Next.Next.Val == val {
            for cur.Next != nil && cur.Next.Val == val {
                cur.Next = cur.Next.Next
            }
        }else {
            cur = cur.Next
        }
    }
    return tmp.Next
}