letcode面試題02 01 移除鍊錶的相同節點

2021-10-25 22:32:47 字數 1073 閱讀 8122

題目:

思路一:利用unordered_set這個容器的函式 《count》。先設定unordered_set,如果unordered_set容器內沒有相同的節點,則將其加入容器中,指標向後移一位,否則則將指標向後移兩位,直到鍊錶遍歷結束

補充知識:

unordered_set它的實現基於hashtable,它的結構圖仍然可以用下圖表示,這時的空白格不在是單個value,而是set中的key與value的資料報

有unordered_set就一定有unordered_multiset.跟set和multiset一樣,乙個key可以重複乙個不可以

unordered_set是一種無序集合,既然跟底層實現基於hashtable那麼它一定擁有快速的查詢和刪除,新增的優點.基於hashtable當然就失去了基於rb_tree的自動排序功能

unordered_set無序,所以在迭代器的使用上,set的效率會高於unordered_set

unordered_se中的count函式只會返回1,0

對於count(x)

若us中存在x,返回1,反之,返回0

listnode* removeduplicatenodes(listnode* head) ;

listnodepos = head;

while (pos->next)

else pos->next = pos->next->next;

}pos->next = null;

return head;

}思路二:雙重迴圈鍊錶

設定兩個指標,分別用於內外兩重迴圈,第一重迴圈從第乙個節點開始,儲存當前節點,第二重迴圈的指標第一重迴圈儲存的結點開始,如果指標指向的節點的下乙個 結點的值和第一重迴圈儲存的節點不同,則指標向前移動一位,如果相同,則指標向前移動兩位,直到空。第二重迴圈結束;一直迴圈下去,直到所有節點遍歷結束,第一重迴圈結束。

listnode* removeduplicatenodes(listnode* head)

phead = phead->next;

}

return head;

}

面試題 02 01 移除重複節點

面試題 02.01.移除重複節點 使用set或者hash表,頭插法 本來想使用暴力的,但是暴力可以優化 氣泡排序的思想 漸漸擴大不重複的區域 definition for singly linked list.public class listnode class solution listnode...

面試題 02 01 移除重複節點

編寫 移除未排序鍊錶中的重複節點。保留最開始出現的節點。示例1 輸入 1,2,3,3,2,1 輸出 1,2,3 示例2 輸入 1,1,1,1,2 輸出 1,2 鍊錶長度在 0,20000 範圍內。鍊錶元素在 0,20000 範圍內。高階 如果不得使用臨時緩衝區,該怎麼解決?對給定的鍊錶進行一次遍歷,...

面試題 02 01 移除重複節點

編寫 移除未排序鍊錶中的重複節點。保留最開始出現的節點 可以使用hash表來儲存鍊錶的值,遍歷鍊錶時檢視hash表裡面是否存在該值即可。definition for singly linked list.struct listnode class solution unordered set int...