劍指Offer 在O 1 時間內刪除鍊錶節點

2021-09-25 19:37:36 字數 505 閱讀 5391

思路:

1、我們要刪除節點i,先把節點i的下乙個節點j的內容複製到i,然後把i的指標指向節點j的下乙個節點,因此刪除節點j;等同於刪除節點i;

2、如果節點位於鍊錶的尾部,那麼只能從頭節點開始遍歷並刪除

3、如果只有乙個節點時,刪除節點之後,還需要把鍊錶的頭節點設定為null;

時間複雜度分析:

對於n-1個非尾節點而言,時間複雜度為o(1);

對於尾結點而言,時間複雜度為o(n);

總的平均時間複雜度為:[(n-1)*o(1)+o(n)]/n=o(1);

注意點:該思路認為刪除節點在鍊錶中;

**:

public listnode deletenode(listnode head, listnode tobedelete)  else 

}return head;

}

在O 1 時間內刪除鍊錶節點

題目 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 的時間刪除該節點。struct listnode void deletenode listnode plisthead,listnode ptobedeleted 演算法思路 一般我們是從頭節點開始遍歷,知道找到要刪除的節點的前面乙個節...

在 O 1 時間內刪除鍊錶節點

解題思路 如果該節點不是尾節點,那麼可以直接將下乙個節點的值賦給該節點,然後令該節點指向下下個節點,再刪除下乙個節點,時間複雜度為 o 1 如果鍊錶只有乙個節點,那麼直接 否則,就需要先遍歷鍊錶,找到節點的前乙個節點,然後讓前乙個節點指向 null,時間複雜度為 o n 綜上,如果進行 n 次操作,...

在O 1 時間內刪除鍊錶節點

from acwing 28 time limit 1s memory limit 64mb problem description 給定單向鍊錶的乙個節點指標,定義乙個函式在o 1 時間刪除該結點。假設鍊錶一定存在,並且該節點一定不是尾節點。sample 輸入 鍊錶 1 4 6 8 刪掉節點 第2...