原題**:
36. 翻轉鍊錶 ii
討論區
翻轉鍊錶中第m個節點到第n個節點的部分
注意事項
m,n滿足1 ≤ m ≤ n ≤ 鍊錶長度
您在真實的面試中是否遇到過這個題?
yes樣例給出鍊錶1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null
挑戰
在原地一次翻轉完成
標籤
鍊錶思路:通過while迴圈找到鍊錶的第m個結點與第n個結點。然後通過三根指標翻轉m~n中間的節點,原地翻轉的思路可以參考翻轉鍊錶一題: ,區別是後繼結點初值不為null而是等於原鍊錶m+1個結點。
翻轉完成後判斷原煉表第n-1個是否為空,若不為空要將翻轉後的鍊錶掛載到第n-1個節點後面,若為空直接返回翻轉鍊錶。
ac**:
/** * definition of singly-linked-list:
* class listnode
* } */
class
solution
listnode * leftnodes=null;
listnode *rightnodes=head;
listnode * cur=head;
int i=1,j=i,count=0
;
while(i//
找到原煉表第m個節點;
while(j//
找到原煉表第n個節點;
rightnodes=rightnodes->next;
listnode * repre=cur;
listnode *renexn=rightnodes;//
翻轉部分尾節點應掛載原鍊錶右側部分;
while(repre!=rightnodes)//
翻轉m~n的節點;
//renexn為翻轉部分頭部,應掛載到原鍊錶左側部分;
if (leftnodes==null)
leftnodes->next=renexn;
return
head;
}};
LintCode 36(翻轉鍊錶 II)
lintcode系列,第36題,題目 翻轉鍊錶中第m個節點到第n個節點的部分,m,n滿足1 m n 鍊錶長度。樣例 例1 輸入 1 2 3 4 5 null,m 2 and n 4,輸出 1 4 3 2 5 null.例2 輸入 1 2 3 4 null,m 2 and n 3,輸出 1 3 2 4...
一次過 Lintcode 36 翻轉鍊錶 II
翻轉鍊錶中第公尺個節點到第 個節點的部分 給出鍊錶1 2 3 4 5 null,m 2和n 4,返回1 4 3 2 5 null 在原地一次翻轉完成 在 m,n 區間翻轉的操作與lintcode 35 reverse linked list相同,就是設立pre,cur,next三指標進行翻轉。重要的...
鍊錶的翻轉
如何快速的實現鍊錶的翻轉,比如鍊錶a資料為 str1,str2,str3,str4,str5,str6 翻轉後則變為 str6,str5,str4,str3,str2,str1 針對上述問題我能想到的一種辦法就是以壓棧的方式來實現,其實現思路相對較為簡單,通過定義乙個鍊錶資料結構的資料棧,遍歷鍊錶,...