reorder-list
来源:互联网 发布:淘宝网推广方法ppt 编辑:程序博客网 时间:2024/04/30 04:17
reorder it to: L 0→L n →L1→L n-1→L 2→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}.
public class ReorderList
{
//节点数据结构
static class ListNode
{
int val;
ListNode next;
ListNode(int x)
{
val = x;
next = null;
}
}
public static void reorderList(ListNode head)
{
if(null == head || null == head.next)
{
return;
}
//快慢指针找到中间节点
ListNode _slow = head;
ListNode _fast = head;
while( null != _fast.next && null != _fast.next.next)
{
_slow = _slow.next;
_fast = _fast.next.next;
}
//拆分链表,并反转中间节点之后的链表
//后一个链表的节点数与前一个链表相同或少一个
ListNode _after = _slow.next;
_slow.next = null;
ListNode _node = null;
//反转时,依次遍历每个节点,依次将每个节点的next指向原来的前一个节点
while(null != _after)
{
ListNode _next = _after.next;
_after.next = _node;
_node = _after;
_after = _next;
}
//合并链表
_after = _node;//后一个链表的第一个节点
ListNode _first = head;
while(null != _after)
{
ListNode _tempFirst = _first.next;
ListNode _tempAfter = _after.next;
_after.next = _first.next;
_first.next = _after;
_first = _tempFirst;
_after = _tempAfter;
}
}
}
- 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
- 安卓开发进阶之弹性布局FlexboxLayout--Part3(翻译)
- 模版
- OpenSSL中重要的命令 —— s_server 和s_client
- NYOJ:74-小学生算术
- django 多域名多app 问题 --django-host
- reorder-list
- NYOJ:75-日期计算
- 面向对象之多态
- 堆和栈
- Docker入门六部曲——Swarm
- 欢迎使用CSDN-markdown编辑器
- Linux终端仿真工具SecureCRT 7.3.5 下载与安装
- 泛型
- sge 启动和重启命令