反轉鍊錶m到n區域

2021-10-20 18:13:52 字數 1049 閱讀 3537

題目描述:

將乙個鍊錶 m 位置到 n 位置之間的區間反轉,要求時間複雜度o(n) ,空間複雜度o(1) 。

例如:

給出的鍊錶為: 1→2→3→4→5→null ,m=2,n=4

返回: 1→4→3→2→5→null

注意:

給出的m、n滿足以下條件:

1≤m≤n≤鍊錶長度

思路:

將鍊錶分為三段,第一段為頭到m-1,第二段為m到n,第三段為n+1到尾,先斷開一二段,然後對中間的部分進行反轉,最後連線一二三段。

**:

/**

* struct listnode ;

*/class

solution

rhead=ftail-

>next;

//第二段的頭

ftail-

>next=

null

;//第一段和第二段斷開

listnode *prev=

null

,*pcur=rhead,

*pnext=rhead-

>next;

for(

int i=m;i<=n;i++

)//反轉第二段

res=pcur;

//記錄第三段的頭

ftail-

>next=prev;

//第一段的尾連第二段的頭

rhead-

>next=res;

//第二段的尾連第三段的頭

return dummy-

>next;}}

;

總結:

1.鍊錶反轉部分需要非常熟悉。固定區域的反轉,可以通過迴圈次數決定,最後反轉完的pcur是在第三段的頭,而不是第二段的頭,prev是第二段的頭,注意邊界。

2.思路沒有問題,就是寫的時候會有錯,呵呵?

程式設計題 反轉從位置 m 到 n 的鍊錶

解題思路 實現 以上圖來解釋 definition for singly linked list.struct listnode struct listnode reversebetween struct listnode head,int m,int n for i 0 i n m i 實現2 4...

刪除鍊錶中的第n到m個節點

給定乙個鍊錶,刪除鍊錶中的第 n 到 m 個節點,返回鍊錶的頭節點。編號從 00 開始 鍊錶的長度不超過 100000 樣例 1 輸入 head 1 2 3 4 5 null,n 1,m 2 輸出 1 4 5 null樣例 2 輸入 head 1 2 3 4 5 null,n 1,m 4 輸出 1 ...

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...