示例 1:輸入: 1->2->3->3->4->4->5
輸出: 1->2->5
示例 2:解答:有兩種思路。輸入: 1->1->1->2->3
輸出: 2->3
第一種,開闢乙個新的陣列,用來記錄重複元素。。但是很有可能發生溢位,因此放棄了這種想法。
第二種,乙個o(n)的演算法,即利用已經排序好的特性,首先對於頭部的重複元素,例如[1,1,2,2,3]這種情況進行刪除處理需要頭指標移動,再對內部元素進行處理,例如[1,2,2,3]這種情況,設定三個指標prepre,pre,p,prepre指向重複元素的前乙個位置,pre和p用來比較是否重複。
**:
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
}
listnode* prepre;
while
( p)
if( pre-
>val != p-
>val)
pre = pre-
>next, p = p-
>next;
else
} prepre-
>next = p;
pre = p, p = p-
>next;}}
}return head;}}
;
執行結果:
刪除排序鍊錶中重複元素
示例 1 輸入 1 2 3 3 4 4 5 輸出 1 2 5 示例 2 輸入 1 1 1 2 3 輸出 2 3 照例使用三個指標來 struct listnode deleteduplicates struct listnode head else 沒有重複的就正常移動 示例 1 輸入 1 1 2 ...
鍊錶 刪除排序鍊錶中的重複元素
一 遍歷方法 思路 通過遍歷一遍鍊錶在遍歷的過程中刪除節點,因為鍊錶是有序的,所以只需比較當前節點和當前節點的下乙個節點,這裡需要注意一下,如果有重複的使用了head.next head.next.next刪除下乙個節點了,但是於下乙個新的節點對比還是現在這個節點,所以不要head head.nex...
刪除排序鍊錶中的重複元素 鍊錶
今天我們開始另一模組的演算法題,關於鍊錶的操作.let s do it 題目 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次.示例1 輸入 1 1 2 輸出 1 2 示例2 輸入 1 1 2 3 3 輸出 1 2 3 思想 public class listnode func dele...