143 重排鍊錶

2022-05-25 05:27:09 字數 1249 閱讀 9632

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

快慢指標找到鍊錶中點,將前後部分斷開,後半部分反轉,然後依次插入前半部分

//快慢指標找煉表中點,slow就是鍊錶中點

listnode* slow = head;

listnode* fast = head;

while (fast->next && fast->next->next)

listnode* reverselist(listnode* head) 

return ret;

}

/**

* 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

//快慢指標找煉表中點,slow就是鍊錶中點

listnode* slow = head;

listnode* fast = head;

while (fast->next && fast->next->next)

//後半部分頭節點

listnode* later = slow->next;

//斷開前後部分

slow->next = nullptr;

//反轉後半部分

later = reverselist(later);

listnode* front = head;

while (front && later)

}//反轉鍊錶

listnode* reverselist(listnode* head)

return ret;

}};

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,重新排列...