LeetCode:Reorder List
来源:互联网 发布:问道辅助软件 编辑:程序博客网 时间:2024/05/21 21: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 altering the nodes' values.
For example, Given {1, 2, 3, 4}, reorder it to {1, 4, 2, 3}.
解题思路:
题目要求in-place, 也就是说只能使用O(1)的空间复杂度。
可以找到中间结点,沿着中间结点把链表断开,然后把后半截单链表reverse一下,最后合并两个单链表。
代码如下:
void reorderList(ListNode* head) {if(head == nullptr || head->next == nullptr) return;ListNode* slow = head, *fast = head, *prev = nullptr;while(fast && fast->next) {pre = slow;slow = slow->next;fast = fast->next->next;}prev-next = nullptr;//cut at middle slow = reverse(slow);//merge two listsListNode *curr = head;while(curr->next) {ListNode *tmp = curr->next;curr->next = slow;slow = slow->next;curr->next->next = tmp;curr = tmp;}curr->next = slow;}ListNode* reverse(ListNode *head) {if(head == nullptr || head->next == nullptr) return head;ListNode *prev = head;for (ListNode *curr, *next = curr->next; curr; prev = curr, curr = next, next = next? next->next: nullptr){curr->next = prev;}head->next = nullptr;return prev;}
阅读全文
0 0
- [leetcode][list] Reorder List
- [leetcode][list] 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
- LeetCode Reorder List
- LeetCode 之 Reorder List
- Leetcode: Reorder List
- LeetCode OJ:Reorder List
- Reorder List (LeetCode)
- Android自定义View之分类和核心函数
- tgt + rbd + multiph
- @Query注解的用法(Spring Data JPA)
- JAVA OOP(二)——方法的重载、构造方法以及this关键字
- TCP/IP协议详解
- LeetCode:Reorder List
- 升级到Oracle 11g后,SAP数据库用户密码过期
- eclipse配置maven + 创建maven项目
- 第七届大数据世界论坛(BDWF 2017)邀您见证大数据在2017的爆发!
- 事务的传播行为和隔离级别
- 彻底理解ThreadLocal
- 移动端的Developer Tools
- 根据需求输入金额,跳出全数字键盘,最多可输入两位小数,若输入数字大于可提现金额,则默认变更为最大可提现金额。
- app版本更新下载服务