一問題描述 使用o(1)的代價刪除單鏈表中的某個節點,函數原型為 void deleteNode(ListNode * head , ListNode * deleteNode) 最初的方法,刪除一個節點都為o(n),因為需要從頭到尾的遍歷這個鏈表。 但是該題目要求,必須用O(1)的代價,實現刪除操作。 所以考慮直接刪除deleteNode節點之后的那個節點,但是刪除之前,需要把之后的那個節點的值, copy到deleteNode節點中,然后再執行刪除操作。 另外需要注意的是,當deleteNode的后節點為空時,需要從頭遍歷進行刪除。此時操作的時間復雜度為o(n),但是總的平均復雜度為 O(n-1 + n) / n,結果仍然是O(1)。 二 代碼如下:
posted on 2011-05-21 20:11 kahn 閱讀(370) 評論(0) 編輯 收藏 引用 所屬分類: 算法相關
Powered by: C++博客 Copyright © kahn