024.两两交换链表中的节点,用递归和 while 循环轻松解决
鲁迅曾说,不积跬步无以至千里,不积小流无以成江海。继续坚持刷题,每天进步一天天,日积月累,就会发生质变。希望二哥的 LeetCode 题解越来越好,球友们的算法水平也越来越高。
题意
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
难度
中等
示例

输入:head = [1,2,3,4]
输出:[2,1,4,3]
分析 1
看到这道题,我们要先搞清楚什么是两两交换,比如 1->2->3->4,交换后就是 2->1->4->3。
第一个和第二个交换,第三个和第四个交换,以此类推。
我们可以用递归来解决这个问题,递归的终止条件是当前节点或者下一个节点为空,那么递归的返回值就是当前节点。
比如说 1 和 2 交换后, 2 的 next 指向 1,1 的 next 指向下一次交换后的结果。
我们来看题解的代码:
class Solution {
public ListNode swapPairs(ListNode head) {
// 递归终止条件:链表没有节点或只有一个节点
...
已加入星球,可直接知识星球授权登录
二哥编程星球目前包含:
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
回复