36 翻轉鍊錶

2022-05-12 02:43:46 字數 1173 閱讀 2677

原題**:

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 針對上述問題我能想到的一種辦法就是以壓棧的方式來實現,其實現思路相對較為簡單,通過定義乙個鍊錶資料結構的資料棧,遍歷鍊錶,...