題目鏈結
給定乙個單鏈表 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...