给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为
, 返回
.
给出的链表为
, 返回
.
例如:
给出的链表为
给出的链表为
数据范围:链表长度
,链表中的值满足
要求:空间复杂度
,时间复杂度
进阶:空间复杂度
,时间复杂度
func deleteDuplicates( head *ListNode ) *ListNode { if head == nil || head.Next == nil { return head } delVal := -1001 pre, cur, next := head, head, head.Next for cur != nil { if cur.Val == delVal { if pre == cur { cur, head, pre = next, next, pre.Next } else { pre.Next, cur = next,next } if next != nil { next = next.Next } continue } if next != nil && cur.Val == next.Val { delVal = cur.Val continue } else { delVal = -1001 } pre, cur = cur, next if next != nil { next = next.Next } } return head }
func deleteDuplicates( head *ListNode ) *ListNode { // write code here Head:=new(ListNode) Head.Next=head pre:=Head tmp:=head isUnique:=true for tmp!=nil && tmp.Next!=nil{ if tmp.Val==tmp.Next.Val{ isUnique=false tmp.Next=tmp.Next.Next }else{ if !isUnique{ isUnique=true pre.Next=tmp.Next tmp=pre.Next }else{ pre=pre.Next tmp=tmp.Next } } } if !isUnique{ pre.Next=tmp.Next } return Head.Next }