package
offer;
//在 o(1)時間刪除鍊錶結點
public
class
problem13
public
static
void
deletenode(listnode head,listnode deletenode)
else
temp.nextnode = null
; }
else}}
}
不用全部遍歷鍊錶,對比,刪除;
把deletenode的下乙個結點複製到deletenode的位置,覆蓋deletenode(實際上是刪除deletenode的下乙個結點)
注意考慮用例:
結點只有乙個的鍊錶;
刪除有多個結點的鍊錶尾結點(遍歷);
刪除空結點,鍊錶為空;
刪除有多個結點的鍊錶的中間乙個結點。
O 1 時間內刪除指定鍊錶結點
題目 給定單鏈表頭指標和乙個結點指標,定義乙個函式在o 1 時間內刪除該結點。分析 對於上圖例項鍊錶 a 刪除指標p有兩種方式 於是,定位到思路2,但是思路2有兩個特例 刪除的是尾指標,需要遍歷找到前乙個指標 整個鍊錶就乙個結點 屬於刪尾指標,但沒法找到前面的指標,需要開小灶單獨處理 大體演算法思路...
O 1 時間內刪除指定鍊錶結點
題目 給定單鏈表頭指標和乙個結點指標,定義乙個函式在o 1 時間內刪除該結點。分析 對於上圖例項鍊錶 a 刪除指標p有兩種方式 於是,定位到思路2,但是思路2有兩個特例 刪除的是尾指標,需要遍歷找到前乙個指標 整個鍊錶就乙個結點 屬於刪尾指標,但沒法找到前面的指標,需要開小灶單獨處理 大體演算法思路...
面試題13 在O 1 時間內刪除鍊錶結點
題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。struct listnode 思路 如果按照常規方法,需要從頭指標開始遍歷,找到要刪除的節點指標的前乙個指標,使前乙個指標在指向要刪除結點的下乙個結點,則需要時間複雜度為o n 設要刪除的節點指標為i,結點指標順序為x...