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 ...