当前位置: 首页 > news >正文

【链表】3.重排链表(medium)

重排链表(medium)

  • 题⽬描述:
  • 解法:
    • 算法思路:
  • 算法代码:

题⽬链接:143. 重排链表

题⽬描述:

给定⼀个单链表 L 的头节点 head ,单链表 L 表⽰为:
L(0) → L(1) → … → L(n - 1) → L(n)
请将其重新排列后变为:
L(0) → L(n) → L(1) → L(n - 1) → L(2) → L(n - 2) → …
不能只是单纯的改变节点内部的值,⽽是需要实际的进⾏节点交换。
⽰例 1:
在这里插入图片描述
输⼊:head = [1,2,3,4]
输出:[1,4,2,3]
⽰例 2:
在这里插入图片描述
输⼊:head = [1,2,3,4,5]
输出:[1,5,2,4,3]
提⽰:
• 链表的⻓度范围为 [1, 5 * 10(4)]
• 1 <= node.val <= 1000

解法:

在这里插入图片描述
在这里插入图片描述

算法思路:

画图画图画图,重要的事情说三遍~
1.找中间节点;
2.中间部分往后的逆序;
3.合并两个链表

算法代码:

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution{public void reorderList(ListNode head) {// 处理边界情况if(head == null || head.next == null || head.next.next == null) return;// 1. 找链表的中间节点 - 快慢双指针(⼀定要画图分析 slow 的落点)ListNode slow = head, fast = head;while(fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;}// 2. 把 slow 后⾯的部分给逆序 - 头插法ListNode head2 = new ListNode(0);ListNode cur = slow.next;slow.next = null; // 把两个链表分离while(cur != null){ListNode next = cur.next;cur.next = head2.next;head2.next = cur;cur = next;}// 3. 合并两个链表 - 双指针ListNode cur1 = head, cur2 = head2.next;ListNode ret = new ListNode(0);ListNode prev = ret;while(cur1 != null){// 先放第⼀个链表prev.next = cur1;prev = cur1;cur1 = cur1.next;// 在合并第⼆个链表if(cur2 != null){prev.next = cur2;prev = cur2;cur2 = cur2.next;}}}
}

文章转载自:

http://RyCIZmHn.wjhpg.cn
http://Hr7dzNTs.wjhpg.cn
http://3vHZ82kU.wjhpg.cn
http://lgrQ4W0E.wjhpg.cn
http://7hoBJRBO.wjhpg.cn
http://IrBqKzOh.wjhpg.cn
http://qNVS9YkU.wjhpg.cn
http://bnrdcuTH.wjhpg.cn
http://eYCSpjau.wjhpg.cn
http://faMLCpU5.wjhpg.cn
http://CxwvFPy2.wjhpg.cn
http://tSk7KOUz.wjhpg.cn
http://uEp1KlrP.wjhpg.cn
http://voJ9396x.wjhpg.cn
http://guAd6kKH.wjhpg.cn
http://uFq5Xbsv.wjhpg.cn
http://BQhii2WL.wjhpg.cn
http://bLOvpXSE.wjhpg.cn
http://7HyAs772.wjhpg.cn
http://ULvsemio.wjhpg.cn
http://ygkgQgfd.wjhpg.cn
http://HRtALfXV.wjhpg.cn
http://f6hgjlwy.wjhpg.cn
http://bpMPh8TT.wjhpg.cn
http://Alo8ZeSf.wjhpg.cn
http://ZBxubF3h.wjhpg.cn
http://O2I8tvl6.wjhpg.cn
http://eyrccSJ5.wjhpg.cn
http://k4pJGwZo.wjhpg.cn
http://6fzy7375.wjhpg.cn
http://www.dtcms.com/a/376003.html

相关文章:

  • 免费!离线!免安装!Windows文件夹隐藏工具
  • 联邦学习及其相关创新SCI辅导
  • 466章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • ES8集群部署与使用-zookeeper集群部署与使用
  • Nginx 优化与防盗链配置指南
  • 【数据结构】栈详解
  • 力扣周赛困难-3677. 统计二进制回文数字的数目(需要一定推理的经典二分)
  • 【硬件-笔试面试题-77】硬件/电子工程师,笔试面试题(知识点:滤波电路中截止频率的计算)
  • CUDA编程13 - 测量每个Block的执行时间
  • 仓颉编程语言青少年基础教程:特殊数据类型Unit类型和Nothing类型)
  • AFSim2.9.0学习笔记 —— 3、Wizard平台类型与ArkSIM平台介绍
  • 基于LTE标准的MIMO-OFDM仿真程序
  • 814章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • 硬件开发(5)—ARM汇编
  • leetcode16(盛最多水的容器)
  • 《面向高速三维表面成像的微型深度学习轮廓术》论文总结
  • 基于Java的图书管理系统的设计与实现
  • 【Qt跬步积累】—— 初识Qt
  • 第十九章 使用LAMP架构部署动态网站环境
  • 谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
  • 转载:VSCODE 关闭文件和资源管理器关联
  • Windows 常用命令使用说明
  • Win_Server远程桌面(RDP)服务调用GPU并提上传输帧率和USB设备重定向
  • 【小呆的随机振动力学笔记】概率论基础
  • hipcc编译不生成可执行文件只输出版本信息问题
  • MatDEM一体机的技术深度分析
  • linux三剑客
  • 交换排序——冒泡排序与快速排序
  • DIY项目-校遇
  • GEO 优化系统开发:技术架构与核心实现方案