1、题目描述

2、题目分析

首先将链表分为两段,然后将后面的一段反转,再合并两个链表。

3、代码

 1 void reorderList(ListNode* head) {
 2         if (head == nullptr || head->next == nullptr || head->next->next == nullptr)
 3             return ;
 4
 5         ListNode *newH = splitList(head);
 6         ListNode *rp = reverseList(newH);
 7         mergeList(head, rp);
 8     }
 9
10
11    ListNode *reverseList(ListNode* list)
12     {
13         if (list == NULL || list->next == NULL)
14             return list;
15
16         ListNode *p = list;
17         ListNode *pn = list->next;
18         list->next = NULL;
19
20         while (pn != NULL) {
21             ListNode *tmp = pn->next;
22             pn->next = p;
23             p = pn;
24             pn = tmp;
25         }
26         return p;
27     }
28
29     void mergeList(ListNode *head_1, ListNode *head_2)
30     {
31         ListNode *p;
32         ListNode *pm = head_1;
33         ListNode *pn = head_2;
34         while (pm != NULL && pn != NULL) {
35             ListNode *tmpm = pm->next;
36             ListNode *tmpn = pn->next;
37             pm->next = pn;
38             if (tmpm != NULL)
39                 pn->next = tmpm;
40             pm = tmpm;
41             pn = tmpn;
42         }
43     }
44
45     ListNode *splitList(ListNode *head)
46     {
47         if (head == NULL || head->next == NULL)
48             return head;
49         ListNode *pm = head;
50         ListNode *pn = head;
51
52         while (pn != NULL && pn->next != NULL) {
53             pm = pm->next;
54             pn = pn->next->next;
55
56         }
57
58         ListNode *newH = NULL;
59         if (pn == NULL) {
60             newH = pm;
61             ListNode *pt = head;
62             while (pt->next != newH) {
63                 pt = pt->next;
64             }
65             pt->next = NULL;
66         } else if (pn->next == NULL) {
67             newH = pm->next;
68             pm->next = NULL;
69         }
70
71
72         return newH;
73     }

转载于:https://www.cnblogs.com/wangxiaoyong/p/10401454.html

LeetCode题解之Reorder List相关推荐

  1. 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!

    转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...

  2. PHP版Leetcode题解开始随缘更新

    2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...

  3. [LeetCode 题解]: Binary Tree Preorder Traversal

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...

  4. LeetCode 题解汇总

    为什么80%的码农都做不了架构师?>>>    LeetCode 题解汇总 转载于:https://my.oschina.net/michao/blog/801863

  5. leetcode题解【持续更新】

    leetcode题解不断更新,以及nowcoder题解.一起加油! 完整请移步我的Github 转载于:https://juejin.im/post/5c8a73d8f265da2de80fa774

  6. 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  7. leetcode题解132-分割回文串 II

    问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割 ...

  8. leetcode题解131-分割回文串

    问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aa ...

  9. [LeetCode 题解]: Roman to Interger

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a roman ...

最新文章

  1. 百度发布ERNIE 2.0,性能超BERT、XLNet
  2. Go各时间字符串使用详解
  3. 实例分析mysql用户登录
  4. 2011年7月28日星期四精彩网语
  5. angular 动画_如何在Angular 6中使用动画
  6. js/css文件修改后浏览器本地缓存解决
  7. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
  8. linux能运行英魂之刃吗,英魂之刃需要什么电脑配置
  9. DeepMind解决医疗AI黑箱问题,诊疗50多种眼疾堪比专家丨论文
  10. 带有控制器,方法,标题,参数,@ RequestParam,@ PathVariable的Spring MVC @RequestMapping注释示例
  11. 四川农大2020计算机专业录取分数线,四川农业大学2020年在全国各省市分专业录取分数线!含艺体类!...
  12. 循环神经网络 递归神经网络_递归神经网络-第3部分
  13. 使用 Ajax 上传文件
  14. DVI 口转 VGA 手工接线方法
  15. 车载导航升级凯立德的步骤
  16. win10 php开发环境搭建
  17. 泵站和水闸无人值守系统
  18. python脚本实现压力测试
  19. better-scroll内pullingUp无效(控制台报错)
  20. mysql 创建 innodb_MySQL创建数据表时设定引擎MyISAM/InnoDB操作

热门文章

  1. 数据结构-----二叉树,树,森林之间的转换
  2. VC各种情况下的窗口句柄的获取
  3. Linux中磁盘还有空间,但创建文件时提示空间不足
  4. c++三五法则(适合学完一遍不怎么清楚的童鞋)
  5. c++之静态成员详细介绍
  6. 为什么判断 n 是否为质数只需除到开平方根就行了?(直接证明)
  7. mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)
  8. 棋盘代码_【案例】 绘制国际象棋棋盘?(turtle 登场)
  9. android dialog 横向全屏,Dialog全屏,去掉状态栏的方式
  10. java 存储过程 数组参数_执行数组参数的存储过程