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

2021-10-20 07:03:01 字數 1078 閱讀 9075

from acwing 28

time limit:1s

memory limit:64mb

problem description

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

假設鍊錶一定存在,並且該節點一定不是尾節點。

sample:

輸入:鍊錶 1->4->6->8

刪掉節點:第2個節點即6(頭節點為第0個節點)

輸出:新鍊錶 1->4->8

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

};

這個題目是乙個很簡單的題目,但是需要想到乙個思維。

如圖:如果要刪除節點02,那麼可能首先想到的是如圖中虛線所示,將01指向03。

node-

>val = node-

>next-

>val;

//node表示當前節點

再刪除03,這裡就和我們前面講到的思路一樣了,我們已知03節點的上一節點02

node-

>next = node-

>next-

>next;

//node表示當前節點

解釋:

原來:01 -> 02 -> 03

操作1:01 -> 03 -> 03

操作2:01 -> 03

ac**只需要將以上兩個操作連在一起就可以了

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

};

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

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

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

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

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

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