LeetCode题解之Reorder List
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相关推荐
- 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!
转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...
- PHP版Leetcode题解开始随缘更新
2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...
- [LeetCode 题解]: Binary Tree Preorder Traversal
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...
- LeetCode 题解汇总
为什么80%的码农都做不了架构师?>>> LeetCode 题解汇总 转载于:https://my.oschina.net/michao/blog/801863
- leetcode题解【持续更新】
leetcode题解不断更新,以及nowcoder题解.一起加油! 完整请移步我的Github 转载于:https://juejin.im/post/5c8a73d8f265da2de80fa774
- 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- leetcode题解132-分割回文串 II
问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割 ...
- leetcode题解131-分割回文串
问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aa ...
- [LeetCode 题解]: Roman to Interger
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a roman ...
最新文章
- 百度发布ERNIE 2.0,性能超BERT、XLNet
- Go各时间字符串使用详解
- 实例分析mysql用户登录
- 2011年7月28日星期四精彩网语
- angular 动画_如何在Angular 6中使用动画
- js/css文件修改后浏览器本地缓存解决
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
- linux能运行英魂之刃吗,英魂之刃需要什么电脑配置
- DeepMind解决医疗AI黑箱问题,诊疗50多种眼疾堪比专家丨论文
- 带有控制器,方法,标题,参数,@ RequestParam,@ PathVariable的Spring MVC @RequestMapping注释示例
- 四川农大2020计算机专业录取分数线,四川农业大学2020年在全国各省市分专业录取分数线!含艺体类!...
- 循环神经网络 递归神经网络_递归神经网络-第3部分
- 使用 Ajax 上传文件
- DVI 口转 VGA 手工接线方法
- 车载导航升级凯立德的步骤
- win10 php开发环境搭建
- 泵站和水闸无人值守系统
- python脚本实现压力测试
- better-scroll内pullingUp无效(控制台报错)
- mysql 创建 innodb_MySQL创建数据表时设定引擎MyISAM/InnoDB操作
热门文章
- 数据结构-----二叉树,树,森林之间的转换
- VC各种情况下的窗口句柄的获取
- Linux中磁盘还有空间,但创建文件时提示空间不足
- c++三五法则(适合学完一遍不怎么清楚的童鞋)
- c++之静态成员详细介绍
- 为什么判断 n 是否为质数只需除到开平方根就行了?(直接证明)
- mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)
- 棋盘代码_【案例】 绘制国际象棋棋盘?(turtle 登场)
- android dialog 横向全屏,Dialog全屏,去掉状态栏的方式
- java 存储过程 数组参数_执行数组参数的存储过程