83. 删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

示例1:

输入:head = [1,1,2]
输出:[1,2]

示例2:

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

解题思路:

  • 由于链表已经排序,相同的节点一定相邻
  • 比较相邻节点,如果相同跳到下一个节点
  • 否则更新当前节点
  • 注意循环条件判断
func deleteDuplicates(head *ListNode) *ListNode {
    curr := head
    // 注意循环条件
    for curr != nil && curr.Next != nil {
        next := curr.Next
        if curr.Val == next.Val {
            curr.Next = next.Next
        }else {
            curr = next // 注意,更新curr 不是 curr.Next
        }
    }
    return head
}