Given a sorted linked list, delete all nodes that has duplicate numbers, leaving only distinct numbers from the original List.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
The practice is to use two pointers to the pre cur
1.dummy.next= Head
2.pre=dummy Cur=dummy,next
3. When the pointer moves to the Pre.next and Cur.next positions, add this position to the pre.next.
4. If no, skip cur.
One traversal time is O (n)
The code is as follows
# Definition for singly-linked list.# class listnode:# def __init__ (self, x): # self.val = x# Self.next = Nonec Lass Solution: # @param head, a listnode # @return a listnode def deleteduplicates (self, head): if head== None or Head.next==none: return head dummy=listnode (0) dummy.next=head pre=dummy cur= Dummy.next while Cur!=none: While cur.next and cur.next.val==pre.next.val: cur=cur.next if Pre.next==cur: pre=pre.next Else: pre.next=cur.next cur=cur.next return Dummy.next
Duplicates Remove from Sorted List II leetcode Python