面試題 單鏈表O 1 時間複雜度內刪除指定結點

2021-09-02 09:29:44 字數 1056 閱讀 1597

給定頭結點和指定結點,刪除指定結點在時間複雜度為o(1)

思路:該節點的前驅無從著手,但後繼容易獲得。若該節點非末尾結點,則可以把後繼結點複製給該節點。**:node.data=node.next.data;

node.next=node.next.next;

若該節點為末尾結點,即node.next==null時。需從頭遍歷,此時時間複雜度為o(n)。

綜上時間複雜度為:(o(1)*(n-1)+o(n))/n=o(1)。

**如下:

package datastructtion.linear;

/** * 給定頭結點和指定結點,刪除指定結點在時間複雜度為o(1)

* 思路:該節點的前驅無從著手,但後繼容易獲得。

* 若該節點非末尾結點,則可以把後繼結點複製給該節點。

* **:

* node.data=node.next.data;

node.next=node.next.next;

若該節點為末尾結點,即node.next==null時。需從頭遍歷,此時時間複雜度為o(n)

綜上時間複雜度為:(o(1)*(n-1)+o(n))/n=o(1)

* @author xiucai

*/public class singlelinkedlist_deletenode

p.next=null;

node=null;

}else

} /**

* 測試方法

* @param args

*/public static void main(string args)

system.out.println(list);

noderemove=list.head.next;

while(remove.next!=null)

system.out.println(remove.next);

removenode(list.head, remove);

system.out.println(list);

}}

面試題 O 1 時間複雜度刪除鍊錶節點

注意 由於本次 中有較為詳細的題目描述與解題分析,此處就不在重複說明 includeusing namespace std include include 題目 一 在o 1 時間內刪除鍊錶節點 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間內刪除該節點。鍊錶節點與函式的定義如下 s...

在時間複雜度O 1 內刪除單鏈表節點

題目 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間內刪除該節點。鍊錶節點定義如下 public class listnode分析 有三種情況 要刪除的節點不是尾節點,時間複雜度為o 1 單鏈表中只有乙個節點,刪除頭節點,時間複雜度為o 1 單鏈表中有多個節點,要刪除的為尾節點,時間...

面試題 在O 1 時間複雜度刪除鍊錶節點

給定乙個單鏈表中的表頭和乙個等待被刪除的節點 非表頭或表尾 請在在o 1 時間複雜度刪除該鍊錶節點。並在刪除該節點後,返回表頭。樣例 給定 1 2 3 4,和節點 3,返回 1 2 4。372 delete node in the middle of singly linked list 刪除鍊錶節...