Linked List Explore Card 最後複習了單向與雙向鏈結陣列的差異,以及陣列與鏈結陣列的比較。
根據前面幾篇文章的內容,可以歸納出它們有以下三點相似之處:
O(1)
的時間。O(1)
的時間。但它們對於刪除指定節點的方式有些許不同:
O(N)
的時間,找到指定節點的前一個節點才能進行刪除操作。prev
可以取的前一個節點,能夠直接進行刪除操作,因此只需要O(1)
的時間複雜度。首先,比較陣列、單向鏈結陣列以及雙向鏈結陣列的時間複雜度:
這張圖表需要注意的地方是雙向鏈結陣列的部分,它有額外的變數指向尾端的節點,因此新增和刪除尾端的節點都是O(1)
的時間複雜度,但如果沒有額外使用變數指向尾端的話,一樣需要從頭開始遍歷整個鏈結陣列,這樣就還是O(N)
的時間複雜度。
終於讀完Linked List 的Explore Card 了,沒想到鐵人賽已經過完一半,但Linked List 的LeetCode 題目還沒講完,裡面有三題Medium,看來需要多花一點時間思考如何解題了。
最後提醒如何選擇使用陣列及鏈結陣列: