重排鍊錶(LeetCode)

2021-10-25 01:39:07 字數 1103 閱讀 2400

題目鏈結

給定乙個單鏈表 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, 重新排列為 1->5->2->4->3.
二刷,幾乎秒解,思路詳見此部落格。

class

solution

listnode *p=slow-

>next,

*pre=

null

; slow-

>next=

null

;while

(p) listnode *h=

newlistnode(0

),*ans=h;

while

(head||pre)

if(pre)}}

};

2021.2.23:三刷

/**

* definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* };

*/class

solution

listnode *p=slow-

>next,

*h,*pre=

null

; slow-

>next=

nullptr

;while

(p) h=pre;

while

(head||h)

if(h)}}

};

leetcode 重排鍊錶

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

鍊錶 重排鍊錶(leetcode 143

這個題是2019年408原題,就是我考研那年的題目,想想一年過去了,還是有點感慨的,希望明年這個時候的自己比現在更厲害吧 三個步驟 1 找到中間結點 2 反轉右半部分,記得將左半部分最後乙個的next指標指向null 不要留野指標 3 根據題目要求左邊取乙個,右邊取乙個 public class s...

leetcode之重排序鍊錶

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