13. Reorder List
2024-10-10 18:40:17
Reorder List
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}
.
说明:分三步,1。从中间分开,成两部分。2,后半部分链表逆置。3.插入合并。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void reorderList(ListNode *head) {
if(head == NULL) return;
ListNode *p1, *p2, *p3, *head2;
p1 = p2 = head;
while(p2->next && p2->next->next) {
p1 = p1->next;
p2 = p2->next->next;
}
head2 = p1->next; p1 = p1->next = NULL;
p2 = head2;
while(p2) {
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head2 = p1; p1 = head;
while(head2 && p1) {
p2 = head2->next;
head2->next = p1->next;
p1->next = head2;
head2 = p2;
p1 = p1->next->next;
} }
};
最新文章
- 浅谈:java泛型与dao重用
- 跨域调用webapi
- ES6中块作用域之于for语句是怎样的?
- 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)
- AFHTTPClient的异步回调模式
- 【MariaDB】MariaDB编译参数
- 【LeetCode 234】Palindrome Linked List
- mysqlsla 分析mysql慢查询日志
- zabbix流量汇聚
- TODO:小程序的使用体验
- Linux学习总结(七)—— CentOS软件包管理:脚本安装
- 磁盘管理 之 parted命令添加swap,文件系统
- 什么是bgp线路
- Kettle参数化配置
- Python内置函数(32)——all
- Python基础之元组
- http请求抓包神器-Fiddler(记录和检查你电脑的所有http通讯)
- MySQL中间件之ProxySQL(3):Admin管理接口
- C-Linux_毫秒级随机值获取
- jupyter notebook新用法