leetcode第143题 ( Reorder List),快慢指针的应用
来源:互联网 发布:网络女主播是做什么的 编辑:程序博客网 时间:2024/06/06 00:11
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
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}
.
代码如下:
void reorderList(ListNode* head) { // cut list 1->2->3->4->5 ==> list1:1->2 list2:3->4->5 ListNode *fast = head, *slow = nullptr; while (fast != nullptr && fast->next != nullptr) { fast = fast->next->next; slow = slow == nullptr ? head : slow->next; } if (slow == nullptr) return; ListNode *head2 = slow->next; slow->next = nullptr; // reverse list2 3->4->5 ==> 5->4->3 slow = fast = head2; head2 = nullptr; while (fast != nullptr) { fast = fast->next; slow->next = head2; head2 = slow; slow = fast; } // merge two list list1:1->2 list2:5->4->3 ==> 1->5->2->4->3 slow = fast = head; while (fast != nullptr && head2 != nullptr) { fast = fast->next; slow->next = head2; head2 = head2->next; slow->next->next = fast ? fast : head2; slow = fast; } }
0 0
- leetcode第143题 ( Reorder List),快慢指针的应用
- LeetCode 143 Reorder List (链表 Map或快慢指针 推荐)
- 快慢指针的应用
- leetcode Linked List Cycle 链表的快慢指针
- [LeetCode 第9题] -- Reorder List
- LeetCode(143) Reorder List
- [LeetCode] [快慢指针] Linked List Cycle
- LeetCode(143)Reorder List
- LeetCode 143 Reorder List
- LeetCode: Reorder List [143]
- [leetcode 143] Reorder List
- [LeetCode 143]Reorder List
- leetcode || 143、Reorder List
- [leetcode] #143 Reorder List
- Reorder List - LeetCode 143
- Leetcode[143]-Reorder List
- leetcode[143]:Reorder List
- LeetCode 143: Reorder List
- Redis系列~安全(十四)
- angularJs表单验证问题
- c++primer第一章小结-1
- matlab 比较时间
- Linux给用户添加sudo权限
- leetcode第143题 ( Reorder List),快慢指针的应用
- 如何用Matlab给一张图圈出多个区域
- 操作系统与硬件
- Redis系列~管道技术(十五)
- Ubuntu下安装intellig idea2016.2.5破解
- Java中的代码点和代码单元
- LeetCode 121 Best Time to Buy and Sell Stock I
- SASL authentication DIGEST-MD5 failed解决办法
- ReactJS 开发过程中的一些使用心得