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
}