day136—快慢指针—重排链表(LeetCode-143)

题目描述

给定一个单链表L的头节点head,单链表L表示为:

L0 → L1 → … → Ln - 1 → Ln

请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 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 * 104]
  • 1 <= node.val <= 1000

解决方案:

这段代码的核心功能是重排单链表(将链表调整为「原链表前半部分节点 + 后半部分反转后的节点」交替拼接的形式,比如原链表 1→2→3→4→5 变为 1→5→2→4→3,1→2→3→4 变为 1→4→2→3),通过「找中点 + 反转后半段 + 交替拼接」三步实现,时间复杂度O(n)、空间复杂度O(1),是该问题的最优解法。

核心逻辑

代码整合了 “找链表中点”“反转链表” 两个基础操作,再通过双指针交替拼接完成重排,全程无额外空间开销:

  1. 第一步:找链表中点:调用midNode函数(快慢指针法)找到链表中间节点mid,将原链表拆分为前半段(head开头)和后半段(mid开头);
  2. 第二步:反转后半段:调用reverseNode函数反转后半段链表,得到反转后的后半段头节点head2
  3. 第三步:交替拼接:用两个指针分别遍历前半段和反转后的后半段,逐个将后半段节点插入前半段节点之间,直到后半段只剩最后一个节点(避免链表成环),完成重排。

总结

  1. 核心思路:将重排问题拆解为 “找中点拆分 + 反转后半段 + 交替拼接” 三个基础链表操作,化繁为简;
  2. 关键细节:拼接时循环条件为head2->next(而非head2),避免最后拼接导致链表闭环;
  3. 效率优势:三步操作均为一次遍历,整体时间O(n)、空间O(1),是重排链表的最优解法。

函数源码:

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: //找中间结点——快慢指针 ListNode* midNode(ListNode* head){ ListNode* slow=head; ListNode* fast=head; while(fast && fast->next){ slow=slow->next; fast=fast->next->next; } return slow; } //反转链表 ListNode* reverseNode(ListNode* head){ ListNode* pre=nullptr; ListNode* cur=head; ListNode* nxt=nullptr; while(cur){ nxt=cur->next; cur->next=pre; pre=cur; cur=nxt; } return pre; } void reorderList(ListNode* head) { ListNode* mid =midNode(head); ListNode* head2=reverseNode(mid); ListNode* nxt=nullptr; ListNode* nxt2=nullptr; while(head2->next){ nxt=head->next; nxt2=head2->next; head->next=head2; head2->next=nxt; head=nxt; head2=nxt2; } } };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO11野生动物保护:红外相机+云端AI全天候监测

YOLO11野生动物保护&#xff1a;红外相机云端AI全天候监测 你是否知道&#xff0c;动物保护组织的志愿者们常常要面对成千上万张红外相机拍摄的照片&#xff1f;这些照片大多在夜间或密林中拍摄&#xff0c;光线昏暗、背景杂乱&#xff0c;很多动物只露出半边身子或者被树叶遮…

电商行业中的数据隐私与安全策略

电商行业中的数据隐私与安全策略关键词&#xff1a;电商行业、数据隐私、数据安全策略、用户信息保护、数据加密摘要&#xff1a;本文聚焦于电商行业的数据隐私与安全策略。随着电商的迅猛发展&#xff0c;大量用户数据被收集和存储&#xff0c;数据隐私与安全问题愈发凸显。文…

YOLO-v5实战应用:港口集装箱编号识别系统

YOLO-v5实战应用&#xff1a;港口集装箱编号识别系统 1. 引言 1.1 业务场景描述 在现代港口物流管理中&#xff0c;集装箱的高效调度与追踪是保障运输效率的核心环节。传统的人工登记方式不仅耗时耗力&#xff0c;还容易因视觉疲劳或环境干扰导致编号识别错误。随着计算机视…

科哥镜像开源免费,保留版权即可自由使用

科哥镜像开源免费&#xff0c;保留版权即可自由使用 1. Emotion2Vec Large语音情感识别系统二次开发构建by科哥 1.1 镜像简介与核心价值 Emotion2Vec Large语音情感识别系统是由科哥基于阿里达摩院ModelScope平台的Emotion2Vec Large模型进行二次开发构建的开源AI镜像。该系…

跨语言配音黑科技:如何用预装环境实现中英双语情感语音

跨语言配音黑科技&#xff1a;如何用预装环境实现中英双语情感语音 你有没有遇到过这样的情况&#xff1a;手头有一段英文视频&#xff0c;内容非常优质&#xff0c;想把它翻译成中文发到国内平台&#xff0c;但配音一换&#xff0c;原视频里那种激情、温柔或幽默的情绪就“没…

外语文件扫描翻译一条龙:AI云端处理省钱方案

外语文件扫描翻译一条龙&#xff1a;AI云端处理省钱方案 你是不是也经常遇到这种情况&#xff1f;作为外贸业务员&#xff0c;每天收到来自世界各地的合同、发票、报价单&#xff0c;语言五花八门——英文、法文、西班牙文、阿拉伯文……既要快速看懂内容&#xff0c;又要规范…

es安装实战:多节点集群配置详细教程

手把手教你搭建高可用 Elasticsearch 多节点集群&#xff1a;从零部署到生产级调优你是不是也遇到过这种情况——项目上线在即&#xff0c;日志量猛增&#xff0c;单机版 Elasticsearch 刚跑两天就卡得不行&#xff1f;主节点宕机后整个搜索服务直接“躺平”&#xff1f;分片分…

照片转油画总失败?AI印象派艺术工坊免模型部署案例详解

照片转油画总失败&#xff1f;AI印象派艺术工坊免模型部署案例详解 1. 技术背景与痛点分析 在图像风格迁移领域&#xff0c;深度学习模型&#xff08;如StyleGAN、Neural Style Transfer&#xff09;长期占据主导地位。这类方案虽然效果惊艳&#xff0c;但对硬件资源要求高、…

NewBie-image-Exp0.1性能优化:多GPU并行生成的配置方法

NewBie-image-Exp0.1性能优化&#xff1a;多GPU并行生成的配置方法 1. 引言 1.1 业务场景描述 在当前AI图像生成领域&#xff0c;尤其是高质量动漫图像生成任务中&#xff0c;模型参数量持续增长&#xff0c;对计算资源的需求也日益提升。NewBie-image-Exp0.1作为基于Next-D…

AutoGLM-Phone-9B极速体验:1块钱测试AI手机自动化

AutoGLM-Phone-9B极速体验&#xff1a;1块钱测试AI手机自动化 你有没有想过&#xff0c;有一天只需要对手机说一句话&#xff0c;比如“帮我点个外卖”&#xff0c;手机就能自动打开美团、选择常吃的店铺、下单并完成支付&#xff1f;这听起来像是科幻电影里的场景&#xff0c…

ComfyUI自动化脚本:定时生成省时80%

ComfyUI自动化脚本&#xff1a;定时生成省时80% 你是不是也遇到过这样的问题&#xff1f;作为MCN机构的内容运营&#xff0c;每天要产出十几条甚至几十条短视频&#xff0c;从创意、脚本、素材到剪辑发布&#xff0c;整个流程像流水线一样不停转。但最耗时间的环节&#xff0c…

YOLO-v8.3部署避坑指南:权限问题与路径错误解决方案

YOLO-v8.3部署避坑指南&#xff1a;权限问题与路径错误解决方案 YOLO-v8.3 是 Ultralytics 公司在 YOLO 系列基础上持续迭代的最新版本之一&#xff0c;继承了 YOLOv8 高效、轻量、易部署的特点&#xff0c;并在模型结构优化、训练稳定性及推理性能方面进一步提升。作为当前主…

MGeo地址标准化预处理:文本清洗与格式统一最佳实践

MGeo地址标准化预处理&#xff1a;文本清洗与格式统一最佳实践 在中文地址数据处理中&#xff0c;由于书写习惯、缩写方式、语序差异等因素&#xff0c;同一地理位置常以多种文本形式存在。例如&#xff0c;“北京市朝阳区建国门外大街1号”可能被记录为“北京朝阳建国门外大街…

Arduino Nano下载问题全解析:驱动与端口配置实战

Arduino Nano下载失败&#xff1f;一文彻底搞懂驱动、端口与复位机制 你有没有遇到过这样的场景&#xff1a;兴冲冲地写完代码&#xff0c;点击“上传”&#xff0c;结果IDE弹出一串红色错误—— avrdude: stk500_recv(): programmer is not responding &#xff1f;明明线插…

Z-Image保姆级入门:5分钟云端部署,小白也能玩转AI生图

Z-Image保姆级入门&#xff1a;5分钟云端部署&#xff0c;小白也能玩转AI生图 你是不是也和我一样&#xff0c;刚转行做UI设计&#xff0c;看到别人用AI生成超高质量的界面配图、插画素材甚至产品原型图&#xff0c;心里直痒痒&#xff1f;但一想到要装Python、配环境、敲命令…

电商直播新玩法:用Live Avatar打造24小时在线数字人

电商直播新玩法&#xff1a;用Live Avatar打造24小时在线数字人 1. 引言&#xff1a;数字人技术如何重塑电商直播 随着消费者对个性化、互动性内容需求的不断提升&#xff0c;传统电商直播正面临“人力成本高”、“时段受限”、“主播状态波动”等瓶颈。在此背景下&#xff0…

怕CUDA版本错?GPT-OSS云端镜像自动适配,0配置

怕CUDA版本错&#xff1f;GPT-OSS云端镜像自动适配&#xff0c;0配置 你是不是也经历过这样的崩溃时刻&#xff1a;兴冲冲地想跑一个开源大模型&#xff0c;结果刚打开终端就卡在环境配置上——torch版本不兼容、CUDA驱动报错、cudatoolkit和显卡算力不匹配……一行行红色错误…

语音合成API设计:基于Voice Sculptor的最佳实践

语音合成API设计&#xff1a;基于Voice Sculptor的最佳实践 1. 技术背景与核心价值 近年来&#xff0c;随着深度学习在语音合成领域的持续突破&#xff0c;指令化语音合成&#xff08;Instruction-based Speech Synthesis&#xff09;逐渐成为个性化声音生成的重要方向。传统…

RexUniNLU金融领域实战:财报关键信息抽取

RexUniNLU金融领域实战&#xff1a;财报关键信息抽取 1. 引言 在金融分析与投资决策中&#xff0c;上市公司发布的财务报告是获取企业经营状况的核心来源。然而&#xff0c;财报文本通常篇幅长、结构复杂、专业术语密集&#xff0c;传统人工提取方式效率低且易出错。如何从非…

论文党必备:GTE相似度计算避坑指南,校园网也能跑

论文党必备&#xff1a;GTE相似度计算避坑指南&#xff0c;校园网也能跑 你是不是也经历过这样的场景&#xff1f;写论文时需要比对大量文献&#xff0c;手动翻来覆去地看哪段话和哪篇论文意思接近&#xff0c;效率低得让人崩溃。更别提导师还要求“要有创新性”&#xff0c;那…