刪除排序連結串列中的重複元素(Remove-Duplicates-From-Sorted-List)
題幹:
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
 輸出: 1->2->3
來源:力扣
還記得刪除排序陣列的重複項是如何解決的嘛,戳這裡,思路都差不多。
其實力扣有很多相似的題目,只不過承載形式不一樣而已。比如上面的刪除重複項,先前是承載在陣列上,這題則承載在連結串列上。
解題思路
初始化指標 current,使其指向連結串列頭。
比較 current 的 val 值 與 current.next 的 val 值。如果 current.val 與 current.next.val 相等,則將 current.next 指向 current.next.next,相當於將原本 current.next 拋棄。如果不想等,則 current 指向 current.next。重複上面的操作。
流程圖如下:
程式碼實現
GO語言實現
func deleteDuplicates(head *ListNode) *ListNode {
current := head
// 當前節點為空 或者 當前節點的下一個節點為空 則認為迴圈結束
for current != nil && current.Next != nil {
// 相等,則跳過下一個節點
if current.Val == current.Next.Val {
current.Next = current.Next.Next
} else {
// 不想等,則移動到下一個節點
current = current.Next
}
}
// 返回
return head
}
總結
每天進步一點點,加油!
演算法教程專案,每天更新一題,點個 star 支援一下呀:
github.com/wx-satellite/learning-a...
本作品採用《CC 協議》,轉載必須註明作者和本文連結