struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
}; class Solution {
public:
void reorderList(ListNode* head)
{
if(head == nullptr) return;
int size = 0;
ListNode *ptr = head;
while(ptr != nullptr)
{
size++;
ptr = ptr->next;
}
if(size <= 2) return;
int breakpoint = (size + 1) / 2;
int i = 0;
ptr = head;
while( i++ < breakpoint)
{
ptr = ptr->next;
}
ListNode *ptr2 = head;
while(ptr2!= nullptr && ptr2->next != ptr)
ptr2 = ptr2->next;
if(ptr2 != nullptr)
ptr2->next = nullptr; ListNode* newheadof2ndPart = reverseLinkedList(ptr);
ptr = head;
for(i = 0; i< breakpoint && ptr != nullptr && newheadof2ndPart != nullptr; i++)
{
ListNode*ptmp = ptr->next;
ListNode*pnextnewhead = newheadof2ndPart->next;
ptr -> next = newheadof2ndPart;
newheadof2ndPart->next = ptmp;
ptr = ptmp;
newheadof2ndPart = pnextnewhead;
}
} ListNode* reverseLinkedList(ListNode* head)
{
if(head == nullptr) return nullptr;
ListNode* newhead = reverseLinkedList(head->next);
if(head-> next != nullptr)
{
head->next->next = head; //Error, 一定要搞清楚到底是哪个next哦
}
if(newhead == nullptr) newhead = head;
head->next = nullptr; return newhead;
} };

LeetCode Reorder List的更多相关文章

  1. [LeetCode] 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 th ...

  2. [leetcode]Reorder List @ Python

    原题地址:http://oj.leetcode.com/problems/reorder-list/ 题意: Given a singly linked list L: L0→L1→…→Ln-1→Ln ...

  3. Leetcode: Reorder List && Summary: Reverse a LinkedList

    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 th ...

  4. [Leetcode] Reorder list 重排链表

    Given a singly linked list L: L 0→L 1→…→L n-1→L n,reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→… You ...

  5. [LeetCode] 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 thi ...

  6. 【LeetCode】143. Reorder List 解题报告(Python)

    [LeetCode]143. Reorder List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://f ...

  7. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  8. Solution to LeetCode Problem Set

    Here is my collection of solutions to leetcode problems. Related code can be found in this repo: htt ...

  9. 【Leetcode】Reorder List JAVA

    一.题目描述 Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must ...

随机推荐

  1. Head First 设计模式 --11 代理模式

    代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问. 代码: interface Boss { public void meeting(); } class BossImp implem ...

  2. PHP 底层的运行机制与原理

    PHP说简单,但是要精通也不是一件简单的事.我们除了会使用之外,还得知道它底层的工作原理. PHP是一种适用于web开发的动态语言.具体点说,就是一个用C语言实现包含大量组件的软件框架.更狭义点看,可 ...

  3. MYSQL 模糊查询

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  4. javabean连数据库

    1.在src下建包,然后包中建javabean类,代码如下(我的包名为aa) package aa; import java.sql.*; public class bean { private fi ...

  5. HTML/CSS总结1

    1.定义网页背景颜色 <body bgcolor="背景色"> 颜色可以用2种方式表示:1. 直接指定颜色名称,如blue.2.使用十六进制数据表示如#RRGGBB,分 ...

  6. gulp详细入门教程-gulp demo download

    简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码 ...

  7. LINUX磁盘分区、格式化、挂载、卸载全程详解

    1.一切皆文件 Linux系统有一个理念:“一切皆文件”,所以计算机的硬件在linux中也是以“文件”的形式存在于/dev目录中.   图为CentOS 6.5系统中/dev目录的部分内容.不同的计算 ...

  8. hive外部表的建立与数据匹配

    1.建立hive的外部表匹配hdfs上的数据 出现如下报错: hive (solar)> ; OK Failed with exception java.io.IOException:java. ...

  9. 一个靠谱的国外maven镜像地址

    <mirror> <id>ui</id> <mirrorOf>central</mirrorOf> <name>Human Re ...

  10. CentOS_7.2编译安装PHP_5.6.20添加扩展模块

    添加ZendGuardLoader扩展: # 解压ZendGuardLoader.so到"/usr/local/php/lib/php/extensions/no-debug-non-zts ...