213 重排鍊錶

2021-09-26 05:57:42 字數 1309 閱讀 3521

題目描述:

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

emm,硬生生的放入list然後遍歷

class solution 

int start = 0;

int end = list.size() - 1;

listnode temnode = null;

if(list.size() == 0)

while (start < end ) else

tem1.next = tem2;

tem2.next = null;

} int size = list.size();

if((size & 1) == 1 && size != 1)}}

效率肯定很低,但是完成了

跟著別人的思路進行一遍

// fast在這裡就表示第二段的開始節點

fast = slow.next;

// 反轉第二段的節點

fast = reverse(fast);

slow.next = null;

// slow表示的是第一段的開始節點

slow = head;

while (slow != null && fast != null)

} public listnode reverse(listnode root)

listnode node = root;

listnode pre = null;

while (node.next != null)

node.next = pre;

return node;

}}

143 重排鍊錶

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

143 重排鍊錶

題解 時間複雜度 o n 空間複雜度 o n definition for singly linked list.struct listnode listnode int x val x next nullptr listnode int x,listnode next val x next nex...

143 重排鍊錶

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