leetcode 重排鍊錶 記錄學習

2021-09-02 01:38:19 字數 702 閱讀 9194

這道題考察鍊錶三個基本操作,第一,找鍊錶的中節點,節點之前是乙個鍊錶;第二,從中間節之後開始反轉,又形成乙個新的鍊錶,第三,合併這兩個鍊錶。這裡需要注意的是(1)中間節點的尋找,如 while(fast &&fast->next)或者while(fast->next&& fast->next->next)找的中間節點slow位置是不一樣的,可以用紙畫一下就明白了,(2)截斷鍊錶時,需要last->next=null操作,以及反轉鍊錶的slow->next=null操作。合併鍊錶的思想是借助其他博主的,思想值得借鑑,記錄學習!

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

last->next=

null

;//反轉

listnode* p=slow;

listnode* q=p->next;

while

(q) slow->next=

null

;//合併兩個鍊錶

fast=head;

while

(fast)

if(p !=

null

) last->next=p;}}

;

leetcode 重排鍊錶

1.使用快慢指標,將鍊錶分成前後兩個部分 listnode fast head listnode slow head while fast null fast.next null listnode mid slow solw指向中間節點 listnode first head listnode se...

重排鍊錶(LeetCode)

題目鏈結 給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 ...

leetcode之重排序鍊錶

definition for singly linked list.struct listnode 一 要找到鍊錶的中間節點,然後把鍊錶分為兩個,最關鍵的是不要忘記找到中間節點後,把鍊錶分為兩部分 middle next nulllptr 二 如何反轉鍊錶 三 如何合併鍊錶 class soluti...