leetcode 重排鍊錶

2021-10-09 16:58:48 字數 1015 閱讀 9825

//1.使用快慢指標,將鍊錶分成前後兩個部分

listnode fast=head;

listnode slow=head;

while(fast!=null && fast.next!=null)

listnode mid = slow; //solw指向中間節點

listnode first = head;

listnode second = mid.next;

mid.next=null;

//2.對第二個鍊錶second進行逆置(頭插法)

listnode list = second;

listnode p = list.next;

while(p!=null)

listnode t = p.next; //暫存工作指標的下乙個節點

p.next = list; //將當前節點插入到頭部

list = p;

p=t;//更新工作指標

}second = list;//逆置後的鍊錶

//3.將第2個鍊錶插入到鍊錶1中 first:l0 l1 l2 l3 second:l5 l4

//插入後: l0 'l5' l1 'l4' l2 l3

重排鍊錶(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 143

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

leetcode之重排序鍊錶

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