删除排序链表中的重复元素的golang实现

时间:2022-06-01 17:00:22

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

输入: ->->
输出: ->
输入: ->->->->
输出: ->->

我们先来看看图示:

删除排序链表中的重复元素的golang实现

引入一个curr指针,指向头元素

判断curr.Val==curr.Next.Val,如果是一样的话,那就把curr.Next指向curr.Next.Next

删除排序链表中的重复元素的golang实现

如果curr.Val!=curr.Next.Val,那我们就要推进curr了,curr = curr.Next

func deleteDuplicates(head *ListNode) *ListNode {
if head == nil {
return nil
}
curr := head
for curr.Next != nil {
if curr.Val == curr.Next.Val {
curr.Next = curr.Next.Next
} else {
curr = curr.Next
}
}
return head
}