日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试题 02.01. 移除重复节点

發布時間:2024/5/7 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题 02.01. 移除重复节点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Title

編寫代碼,移除未排序鏈表中的重復節點。保留最開始出現的節點。

示例1:

輸入:[1, 2, 3, 3, 2, 1]
輸出:[1, 2, 3]

示例2:

輸入:[1, 1, 1, 1, 2]
輸出:[1, 2]

提示:

鏈表長度在[0, 20000]范圍內。
鏈表元素在[0, 20000]范圍內。

進階:

如果不得使用臨時緩沖區,該怎么解決?

哈希表

Solve

對給定的鏈表進行一次遍歷,并用一個哈希集合(HashSet)來存儲所有出現過的節點。

由于在大部分語言中,對給定的鏈表元素直接進行「相等」比較,實際上是對兩個鏈表元素的地址(而不是值)進行比較。

因此,我們在哈希集合中存儲鏈表元素的值,方便直接使用等號進行比較。

具體地,我們從鏈表的頭節點 head 開始進行遍歷,遍歷的指針記為 pos。由于頭節點一定不會被刪除,因此我們可以枚舉待移除節點的前驅節點,減少編寫代碼的復雜度。

Code

class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def removeDuplicateNodes(self, head: ListNode) -> ListNode:if not head:return headpos, occurred = head, [head.val]while pos.next:cur = pos.nextif cur.val not in occurred:occurred.append(cur.val)pos = pos.nextelse:pos.next = pos.next.nextreturn head

復雜度分析

時間復雜度:O(N),其中 N 是給定鏈表中節點的數目。

空間復雜度:O(N)。在最壞情況下,給定鏈表中每個節點都不相同,哈希表中需要存儲所有的 N 個值。

總結

以上是生活随笔為你收集整理的面试题 02.01. 移除重复节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。