Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example:
1
2
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
提示
解題應用
LinkedList
Pointer
Default:
1
2
3
4
5
6
7
8
9
10
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
funcdeleteDuplicates(head *ListNode) *ListNode {
}
解答思路:
之前有一遍Remove Duplicates from Sorted List,原先是先不管後頭的值是否出現重覆,先將第一個節點保留於原LinkedList之中,當後頭出現重覆的值才做嫁接跳過該節點,不過這次是只要該值重覆就要完全跳過,所以做法上有很大的不同,要遍歷到目前的節點與前一個的節點不同值才考慮是否要保留先前的節點,如果前一個是沒有重覆的節點可以保留下來的話,還要記得將前一個節點做註記,以利接下來如果後續再次出現沒有重覆的節點時,可以拿來與先前未重覆的節點做嫁接。