链表-两两交换(Java的三种解法)

链表-两两交换(Java的三种解法)

道题是链表操作的一个经典问题,掌握了它,你对链表的指针操作和递归思维会有更深的理解。只要你跟着我的思路走一遍,自己动手写写代码,很快就能独立解决这类问题!咱们现在就来聊聊这道题吧


1. 看到这道题目时我想到了什么,以及如何运用现实案例讲解

你有没有想过,生活中很多事情都像是“交换顺序”或者“重新排列”。比如说,你在排队买东西,队伍里的人两两交换位置,前面的人变成后面,后面的人变成前面,这就是一种“两两交换”的操作。

再举个贴近算法的例子:想象你在整理一排书,原本是按顺序摆放的,但你想把相邻的两本书交换位置,比如第1本和第2本换,第3本和第4本换,这样整个书架的顺序就变了。这就像链表的两两交换,我们需要调整指针,让相邻节点的位置互换。

业务场景:这道题在实际业务中有很多应用,比如:

  • 数据排序:在某些场景下,需要对数据进行局部重排,比如用户列表中两两交换显示顺序,用于A/B测试。
  • 任务调度:在任务队列中,调整任务执行顺序,比如优先级相邻任务交换,提升调度效率。
  • 游戏设计:在游戏排行榜中,动态调整玩家位置,比如相邻玩家交换,用于视觉效果或平衡机制。

2. 解法分析:至少3种解法,最优解法和最快解法

解法1:递归(Recursion)——直观且代码简洁

思路:用递归的方式处理链表的两两交换。每次处理当前节点和下一个节点,交换它们的位置,然后递归处理剩余的链表。终止条件是当前节点为空或下一个节点为空。

  • 时间复杂度:O(n),n是链表节点数量,每个节点只处理一次。
  • 空间复杂度:O(n),由于递归调用栈,最坏情况下为链表长度。
解法2:迭代(Iteration with Dummy Node)——更符合工程实践

思路:用迭代的方式处理链表,引入一个哑节点(dummy node)作为辅助,方便处理头节点交换。每次处理一对节点,调整指针完成交换,然后移动到下一对节点。

  • 时间复杂度:O(n),每个节点只遍历一次。
  • 空间复杂度:O(1),只用常数级额外空间。
解法3:迭代(Iteration without Dummy Node)——直接操作头节点

思路:与解法2类似,但不引入哑节点,直接操作头节点。需要额外处理头节点交换的情况,代码逻辑稍复杂,但也能实现两两交换。

  • 时间复杂度:O(n),每个节点只遍历一次。
  • 空间复杂度:O(1),只用常数级额外空间。
最优解法和最快解法
  • 最优解法:如果追求代码可读性和工程实践,推荐迭代解法(带哑节点),因为它空间复杂度低,逻辑清晰,容易维护。如果是初学者或面试中追求简洁,递归解法也是不错的选择。
  • 最快解法:在实际运行中,**迭代解法(带哑节点)**通常是最快的,因为它避免了递归的调用栈开销,且指针操作效率高。

迭代解法(带哑节点)模板(Java)

publicListNodeswapPairs(ListNode head){ if(head ==null|| head.next ==null)return head;ListNode dummy =newListNode(0); dummy.next

Read more

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

前引:屏幕前的你还在AI智能搜索框这样搜索吗?“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” ,。看到此篇文章的小伙伴们!请准备好你的思维魔杖,开启【霍格沃茨模式】,看我如何更新秘密的【知识炼金术】,我们一起来解锁更加刺激的剧情!友情提醒:《《《前方高能》》》 目录 在哪使用DeepSeek 如何对提需求  隐藏玩法总结 几个高阶提示词 职场打工人 自媒体创作 电商实战 程序员开挂 非适用场地 “服务器繁忙”如何解决 (1)硅基流动平台 (2)Chatbox + API集成方案 (3)各大云平台 搭建个人知识库 前置准备 下载安装AnythingLLM 选择DeepSeek作为AI提供商 创作工作区 导入文档 编辑  编辑 小编寄语 ——————————————————————————————————————————— 在哪使用DeepSeek 我们解锁剧情前,肯定要知道在哪用DeepSeek!咯,为了照顾一些萌新朋友,它的下载方式我放在下面了,拿走不谢!  (1)

By Ne0inhk
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek + 通义万相制作AI视频流程 4.1 DeepSeek + 通义万相制作视频优势 4.1.1 DeepSeek 优势 4.1.2 通义万相视频生成优势 4.2

By Ne0inhk
【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

系列篇章💥 No.文章01【DeepSeek应用实践】DeepSeek接入Word、WPS方法详解:无需代码,轻松实现智能办公助手功能02【DeepSeek应用实践】通义灵码 + DeepSeek:AI 编程助手的实战指南03【DeepSeek应用实践】Cline集成DeepSeek:开源AI编程助手,终端与Web开发的超强助力04【DeepSeek开发入门】DeepSeek API 开发初体验05【DeepSeek开发入门】DeepSeek API高级开发指南(推理与多轮对话机器人实践)06【DeepSeek开发入门】Function Calling 函数功能应用实战指南07【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:本地部署与API服务快速上手08【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:Web聊天机器人部署指南09【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:基于vLLM 搭建高性能推理服务器10【DeepSeek部署实战】基于Ollama快速部署Dee

By Ne0inhk

用DeepSeek和Cursor从零打造智能代码审查工具:我的AI编程实践

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】摸鱼、技术交流群👉 点此查看详情 引言:AI编程革命下的机遇与挑战 GitHub统计显示,使用AI编程工具的开发者平均效率提升55%,但仅有23%的开发者能充分发挥这些工具的潜力。作为一名全栈工程师,我曾对AI编程持怀疑态度,直到一次紧急项目让我彻底改变了看法。客户要求在72小时内交付一个能自动检测代码漏洞、优化性能的智能审查系统,传统开发方式根本不可能完成。正是这次挑战,让我探索出DeepSeek和Cursor这对"黄金组合"的惊人潜力。 一、工具选型:深入比较主流AI编程工具 1.1 为什么最终选择DeepSeek+Cursor? 经过两周的对比测试,我们发现不同工具在代码审查场景的表现差异显著: 工具代码理解深度响应速度定制灵活性多语言支持GitHub Copilot★★★☆★★★★★★☆★★★★Amazon CodeWhisperer★★☆★★★☆★★★★★★☆DeepSeek★★★★☆★★★★★★★☆★★★★☆Cursor★★★☆★★★★☆★★★★★★★★ 关键发现: * Dee

By Ne0inhk