问题描述

思路简述

链表的题目主要考察coding基本功,思路难度都不算太大,这道的思路也很简单,而且链表的题目如果出现在面试一般都要求原地操作空间复杂度O(1),尽量不用容器;

首先快慢指针找到链表的中点(奇数个节点时中点,偶数节点时上中点),然后对中点后的节点原地逆置,将逆置后的链表backup以后将中点的Next置空,随后重新组装链表即可。

代码描述

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/// 逆序head之后的链表
func reverseList(head *ListNode) *ListNode{if head.Next == nil || head.Next.Next == nil{return head}p, temp := head.Next, head.Next.Nextfor temp != nil{backup := head.Nexthead.Next = tempp.Next = temp.Nexttemp.Next = backuptemp = p.Next}return head
}func reorderList(head *ListNode)  {if head == nil || head.Next == nil{return}// 奇数找到中点 偶数找到上中点low, fast := head, headfor fast.Next != nil && fast.Next.Next != nil{low = low.Nextfast = fast.Next.Next}// 反转low之后的节点R := reverseList(low)backup, help := R.Next, R.NextR.Next = nilfor help.Next!=nil{help = help.Next}help.Next = RR = backupL := headdummyNode := new(ListNode)var rearPointer *ListNode = dummyNodefor L != nil && R != nil{rearPointer.Next = LL = L.NextrearPointer = rearPointer.Nextif R == rearPointer{break}rearPointer.Next = RR = R.NextrearPointer = rearPointer.Next}rearPointer.Next = nil}

Leetcode143. 重排链表 (golang描述)相关推荐

  1. leetcode143 重排链表

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例 1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3. 示例 2: 给定链 ...

  2. 【LeetCode笔记】143. 重排链表(Java、链表、栈、快慢指针)

    文章目录 题目描述 思路 & 代码 更新版:快慢指针 + 翻转链表 题目描述 一看题目反序:用栈 更新:O(1) 空间复杂度 思路 & 代码 先快慢指针,找到需要入栈的起点,然后逐个入 ...

  3. 【区块反转】【链表合并】【反转链表】【链表元素分类】【链表去重】【重排链表】

    目录 说明: 1110 区块反转 输入格式: 输出格式: 输入样例: 输出样例: 1105 链表合并 输入格式: 输出格式: 输入样例: 输出样例: 1025 反转链表 输入格式: 输出格式: 输入样 ...

  4. 【每日一算法】重排链表

    微信改版,加星标不迷路! 每日一算法-重排链表 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→L ...

  5. LeetCode-笔记-143. 重排链表

    LeetCode-笔记-143. 重排链表 143. 重排链表 给定一个单链表 L:L0→L1→-→L**n-1→Ln , 将其重新排列后变为: L0→L**n→L1→L**n-1→L2→L**n-2 ...

  6. Java多重链表_Java实现 LeetCode 143 重排链表

    143. 重排链表 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节 ...

  7. 【CCCC】L2-022 重排链表 (25分),,链表遍历

    problem L2-022 重排链表 (25分) 给定一个单链表 L ​1 ​​ →L ​2 ​​ →⋯→L ​n−1 ​​ →L ​n ​​ ,请编写程序将链表重新排列为 L ​n ​​ →L ​ ...

  8. 重排链表-c语言链表法解决

    重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...

  9. 【L2-022 重排链表】天梯赛L2系列详细解答

    天梯赛L2-022 重排链表 题目详情: 输入样例: 00100 6 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 6823 ...

最新文章

  1. LTE Paging时频资源
  2. HDU 3625 Examining the Rooms【第一类斯特灵数】
  3. 图解用MySQL创建进销存数据库
  4. Python + logging 输出到屏幕,将log日志写入文件(亲测)
  5. tomcat相关配置技巧梳理 (修改站点目录、多项目部署、限制ip访问、大文件上传超时等)...
  6. 微信处罚腾讯判定其滥用原创:不要惹我 我狠起来能铁锅炖自己!
  7. 互联网行业不需要中年人,那些35岁离开BAT的人都去哪了?
  8. 软件工程 第六章 编码与测试
  9. 分期手续费转换为年化利率
  10. 【计算机软件基础】如何理解鲁棒性Robust?
  11. 计算机课做名片怎么做,小学信息技术名片DIY教案设计
  12. jQuery插件开发实战
  13. python if实现对话_Python生成微信对话生成器(四)
  14. 用机器学习做风控的氪信,凭什么获金牌投资人章苏阳数千万融资?
  15. 104.android 简单的检查小米、华为、OPPO、VIVO手机系统是否打开通话自动录音功能,跳转通话录音页面,安卓怎么检查开启通话自动录音,安卓开启自动录音
  16. 用Android做的一个简单的视频播放器
  17. python 使用七牛云cdn
  18. VMware-WorkStation 序列号(转)
  19. mongoDB数据库的安装与配置
  20. 水星UD6S网卡Linux驱动,水星UD6S驱动程序官方版

热门文章

  1. 声学信号频谱图分类(十三)
  2. Android Studio 2.3报错: Error:Cause: buildToolsVersion is not specified解决
  3. AudioTrack到AudioFlinger流程分析(三十八)
  4. android MemeoryFile和Parcel操作文件描述符fd
  5. qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
  6. linux替换字符串 正则,Linux 字符串操作-裁剪和正则替换
  7. MySQL中table_schema的基本操作
  8. java 1.7图片压缩_appium+java(七)图片的放到及缩小操作
  9. map.setTerrain is not a function
  10. mysql5.7 json特性_mysql5.7新增加的JSON数据类型特征介绍