Reorder List
来源:互联网 发布:经济学推荐书籍 知乎 编辑:程序博客网 时间:2024/06/16 04:47
------QUESTION------
Given a singly linked list
reorder it to:
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}
,reorder it to {1,4,2,3}
.
------SOLUTION------
class Solution {public: void reorderList(ListNode *head) { if (!head|| !head->next) return; // partition the list into 2 sublists of equal length ListNode *slowNode = head, *fastNode = head; while (fastNode->next) { fastNode = fastNode->next; if (fastNode->next) { fastNode = fastNode->next; } else { break; } slowNode = slowNode->next; } // 2 sublist heads ListNode *head1 = head, *head2 = slowNode->next; // detach the two sublists slowNode->next = NULL; // reverse the second sublist ListNode *cur = head2, *post = cur->next; cur->next = NULL; while (post) { ListNode* temp = post->next; post->next = cur; cur = post; post = temp; } head2 = cur; // the new head of the reversed sublist // merge the 2 sublists as required ListNode* p = head1, *q = head2; while (q ) { ListNode *temp1 = p->next; ListNode *temp2 = q->next; p->next = q; q->next = temp1; p = temp1; q = temp2; } } };
0 0
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- poj 1143 number game
- GeoGeo多线程
- GeoGeo并行计算
- JPush PhoneGap Plugin
- 设计模式 - 适配器模式 C++
- Reorder List
- 新手如何学习C#、ASP.NET
- LRU Cache
- GeoGeo大数据集
- Insertion Sort List
- Sort List
- LeetCode: Remove Duplicates from Sorted Array
- Max Points on a Line
- GeoGeo Master-Slave窗口事件