演算法13 使用o(1)的時間複雜度去刪除乙個節點

2021-08-15 21:44:08 字數 454 閱讀 1506

題目:給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o(1)時間刪除該結點。

核心思想:正常刪除單鏈表的乙個結點,需要找到該結點的前乙個結點,然後將前乙個結點的next指標指向要刪除結點的下乙個結點即可。但此處要求o(1)的時間複雜度,可以把要刪除的結點轉換為當前結點的下乙個結點,這樣就相當於找到了被刪除結點的前乙個結點。轉換的方法當然是把下乙個結點的內容拷貝到當前結點上。這樣刪除下乙個結點後,也就達到了刪除當前結點的效果。編碼時,注意處理「最後乙個結點」的特殊情況。

public class problem13

public void deletenode(listnode head,listnode delistnode)

if(head==delistnode)else

pointlistnode.nextnode=null;

}else}}

}class listnode

時間複雜度為O(1)的跳台階

分析 這是一道典型的動態規劃的題目,我們可以這樣想,我們最後一步可以跳1級,也可以跳2級,跳 跳n級,我們用最後一步跳一級來舉例子,假設最後一步跳1級,那還剩下n 1個台階,又可以分為最後一步跳1級,2級 直到n 1級。好啦,就分析到這裡,我們可以看到當我們最後一步跳一級的時候,剩下的n 1級台階又...

TS,JS陣列去重(事件複雜度為O 1 )

今天去看了時間複雜度,覺得在 執行優化中,還是佔據著很大一部分程度了。參考文章這篇文章裡看了陣列去重,沒有檢查資料型別所以我在此之上對此做出了一點修改,本篇使用了hash演算法。以下內容大部分參考了大神文章 我也有想過做乙個功能強大的陣列深度去重方法,原諒我能力有限,絞盡腦汁沒有想出來 歡迎大神指教...

演算法的時間複雜度O

在進行演算法分析時,語句總的執行次數 t n 是關於問題的規模n 的函式,進而分析 t n 隨 n 的變化情況並確定 t n 的數量級,演算法的時間複雜度,也就是演算法的時間度量,記作 t n o f 它表示隨問題的規模 n 的增大,演算法的執行時間的增長率 f n 的增長率相同,稱作演算法的漸近時...