leetcode系列(71)Reorder List
来源:互联网 发布:酷家乐云设计软件 编辑:程序博客网 时间:2024/05/16 01:39
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 alteringthe nodes' values.
For example,
Given {1,2,3,4}, reorder it to {1,4,2,3}.
解答:1. 用快慢指针split链表为两个,2. 逆序第二链表,3.安装要求拼接两个链表。
class Solution {public: void reorderList(ListNode* head) { if (head == nullptr) { return; } auto slow = head; auto fast = head->next; while (fast != nullptr && fast->next != nullptr) { slow = slow->next; fast = fast->next->next; } auto list1 = head; //ListNode* list2 = nullptr; //_reverse_1(slow->next, &list2); ListNode* list2 = _reverse_2(slow->next, nullptr); slow->next = nullptr; while (list2 != nullptr) { auto tmp = list2->next; list2->next = list1->next; list1->next = list2; list1 = list1->next->next; list2 = tmp; } }private: void _reverse_1(ListNode* head, ListNode** ret) { if (head != nullptr) { auto tmp = head->next; head->next = *ret; *ret = head; _reverse_1(tmp, ret); } } ListNode* _reverse_2(ListNode* head, ListNode* ret) { if (head == nullptr) { return ret; } else { auto tmp = head->next; head->next = ret; ret = head; return _reverse_2(tmp, ret); } }};
0 0
- leetcode系列(71)Reorder List
- LeetCode(143) Reorder List
- [leetcode][list] Reorder List
- [leetcode][list] Reorder List
- LeetCode 题解(142): Reorder List
- leetcode reorder-list(java实现)
- Leetcode: Reorder List
- [LeetCode] Reorder List
- LeetCode题解:Reorder List
- Leetcode: Reorder List
- LeetCode:Reorder List
- leetcode之Reorder List
- Leetcode: Reorder List
- [LeetCode]Reorder List
- [LeetCode] Reorder List
- leetcode Reorder List
- LeetCode | Reorder List
- LeetCode Reorder List
- 1042. 字符统计(20)
- 汉诺塔
- [更新]基于MFC对话框并使用MCI接口的音乐播放器
- cocoapods 安装使用
- 小常识
- leetcode系列(71)Reorder List
- POJ2777 线段树+LASY思想
- 布鲁斯·威利斯
- Http通信与Socket通信比较:谁更猴塞雷?
- Linux/Unix下的任务管理器-top命令
- redis的事务
- Codevs_P4645 Fibonacci的兔子(枚举+快速幂)
- 最长路径
- [NOIP基础数论]最大公约数和最小公倍数