博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode]143. Reorder List
阅读量:5894 次
发布时间:2019-06-19

本文共 1511 字,大约阅读时间需要 5 分钟。

Given a singly linked list LL0→L1→…→Ln-1→Ln,

reorder it to: L0→LnL1→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}.

 

看上去有点难,实际上可以分为几个步骤。

1.找到中间节点。划分为两个链表。(算法总结里有)

2.把后半部分链表反转。(算法总结里有)

3.合并两个链表。(递归)

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* ReverseList(ListNode* head){12     if(head==NULL||head->next==NULL)13         return head;14     ListNode* p=head->next,*q=head,*l=head;15     while(p->next!=NULL){16         l=p->next;17         p->next=q;18         q=p;19         p=l;20     }21     p->next=q;22     head->next=NULL;23     return p;24 }25 ListNode* Merge(ListNode* l1,ListNode* l2){26     if(l1==NULL)27         return l2;28     if(l2==NULL){29         l1->next=NULL;30         return l1;31     }32     ListNode* p=l1,*q=l2;33     l1=l1->next;34     l2=l2->next;35     p->next=q;36     q->next=Merge(l1,l2);37     return p;38 }39     void reorderList(ListNode* head) {40         if(head==NULL||head->next==NULL)41             return;42         ListNode* p=head,*q=head,*bf=NULL;43         while(p&&p->next!=NULL){44             p=p->next->next;45             bf=q;46             q=q->next;47     }48     bf->next=NULL;49     q=ReverseList(q);50     Merge(head,q);51     return;52     }53 };

 

转载于:https://www.cnblogs.com/LUO77/p/5672007.html

你可能感兴趣的文章
[布局] bootstrap基本标签总结
查看>>
异步编程思想
查看>>
"数学口袋精灵"bug(团队)
查看>>
2017python第六天作业 面向对象 本节作业: 选课系统
查看>>
【找规律】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1...
查看>>
Scribes:小型文本编辑器,支持远程编辑
查看>>
为什么要使用 SPL中的 SplQueue实现队列
查看>>
文件的相关操作(创建、打开、写入、读出、重命名)
查看>>
品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制
查看>>
PHP const关键字
查看>>
ssh 安装笔记
查看>>
游戏音效下载网站大全
查看>>
angular $resouse服务
查看>>
实验五
查看>>
文法分析
查看>>
记那次失败了的面试
查看>>
程序包+创建包规范+创建包体+删除程序包
查看>>
3-继承
查看>>
java中如何实现类似goto的作法
查看>>
海归千千万 为何再无钱学森
查看>>