面試題 02.01. 移除重複節點中,一看到去重,立馬就想到了hashset進行去重,因此在開始解答的時候使用hashset很快寫出來,在最初的測試中也是沒問題,一提交就發現了wa聲一片,其中原因在於測試的時候樣本不夠,都使用了有序的鍊錶,但是在hashset進行去重的時候,恰好也是去重+排序,對應原文要求保持最開始出現的順序,因此簡單使用hashset方法是不行的
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
listnode dummy =
newlistnode(0
);listnode newhead = dummy;
for(
int ste:st)
return dummy.next;
}}
回憶起劍指 offer 18. 刪除鍊錶的節點即有刪除相應節點的**,但是在18題只要求刪除一次.不過稍微修改一下刪除**即可,使得可以多次刪除重複元素,只需要修改其中一步,保持快慢指標的順序,即可多次刪除
/**
* definition for singly-linked list.
* public class listnode
* }*/
class
solution
else
}return dummyhead.next;
}}
參考這道題可以對這道題做類似的處理,但是需要注意保留ln = ln.next;,而不是直接newdummy.next = ln.next,直接使用的話,會使得快慢指標的順序發生變化,使得在後續刪除中失效,不過在18題中無需這樣處理
/**
* definition for singly-linked list.
* public class listnode
* }*/
class
solution
else
}// system.out.println(st);
return dummy.next;
}}
面試題 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...