Reorder List
来源:互联网 发布:淘宝同行竞争插件 编辑:程序博客网 时间:2024/06/14 16:03
Givena 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 withoutaltering the nodes' values.
For example,
Given {1,2,3,4}
,reorder it to {1,4,2,3}
.
思路:小技巧就是把链表拆车两段,后面的reverse,然后两个链表重新合并。里面考的基础知识比较多,比如如何拆两端,如何reverse一个list,如何合并两个链表。
class Solution {public: void reorderList(ListNode *head) { if(head == NULL || head->next == NULL) { return; } ListNode *slow = head; ListNode *fast = head; while (fast->next && fast->next->next) { slow = slow->next; fast = fast->next->next; } ListNode *secondHead = slow->next; slow->next = NULL; //这个地方写成==check了一个多小时!!! secondHead = reverseList(secondHead); ListNode *firstHead = head; while (secondHead) { ListNode *tmp1 = firstHead->next; ListNode *tmp2 = secondHead->next; firstHead->next = secondHead; secondHead->next = tmp1; firstHead = tmp1; secondHead = tmp2; } } ListNode* reverseList(ListNode *head) { if (head == NULL || head->next == NULL) { return head; } ListNode *pre = head; ListNode *curr = head->next; while (curr) { ListNode *tmp = curr->next; curr->next = pre; pre = curr; curr = tmp; } head->next = NULL; return pre; }};
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
- IIf 函数
- Oracle OCP笔记(08)控制文件
- 第四章字符串和多维数组结构导图
- 最短路径--Dijkstra(狄克斯特拉)算法
- Apache Mina使用手记(一)
- Reorder List
- 数据结构第五章结构图
- 网卡收发模式及使用
- Word Ladder
- 有哪里可以逃过POS机恶意软件的威胁?
- Apache Mina使用手记(二)
- 微信朋友圈api使用
- matlab练习程序(直方图匹配)
- 黑马程序员-iOS基础-Objective-C基础(四)OC开发技巧及核心语法(上)