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

LeetCode热题100--24. 两两交换链表中的节点--中等

1. 题目

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:
在这里插入图片描述
输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:
输入:head = []
输出:[]

示例 3:
输入:head = [1]
输出:[1]

2. 题解

/*** 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 ListNode swapPairs(ListNode head) {if(head == null || head.next == null){return head;}ListNode next = head.next;head.next = swapPairs(next.next);next.next = head;return next;}
}

3. 解释

出自这位老师:画手大鹏

  1. public ListNode swapPairs(ListNode head) 是方法声明,表示这个名为swapPairs的方法接受一个参数,即链表的头节点。该方法返回一个ListNode类型的值。

  2. if(head == null || head.next == null){ return head; } 如果链表为空或只有一个节点,那么直接返回这个单独的节点作为结果(因为没有需要交换的元素)。

  3. ListNode next = head.next; 获取第二个节点。

  4. head.next = swapPairs(next.next); 递归调用函数来处理下一对,并将结果链接到当前头部。这样做是为了保持列表的顺序(因为我们正在交换每一对)。

  5. next.next = head; 将第一个节点设置为第二个节点的后继节点。这行代码实际上是完成了两个节点的交换。

  6. return next; 返回新的头部,即刚刚交换的那个节点。

  7. 这段代码的时间复杂度是O(n),空间复杂度是O(1),其中n是链表中的节点数量。因为我们只使用了一个常数量的额外变量,不管输入的大小如何,所花费的时间和空间都是恒定的。

http://www.xdnf.cn/news/16075.html

相关文章:

  • 视频孪生赋能数字住建:构建智慧城市新蓝图​
  • TDengine 的 HISTOGRAM() 函数用户手册
  • 如何在 npm 上发布 Element Plus 二次封装组件
  • 算法竞赛备赛——【图论】最小生成树
  • 关于针对 DT_REG 出现红色波浪线的问题(编译错误/IDE警告),以下是 精准解决方案,保持你的代码功能完全不变:
  • 基于数据挖掘的短视频点赞影响因素分析【LightGBM、XGBoost、随机森林、smote】
  • 如何在macOS上修改iPhone的定位
  • uniapp拦截返回事件
  • Android Multidex 完全解析:解决64K方法数限制
  • LLM 幻觉一般是由于什么产生的,在模型什么部位产生
  • 编程与数学 03-001 计算机组成原理 21_服务器计算机组成实例解析
  • Django学习之旅--第13课:Django模型关系进阶与查询优化实战
  • STM32 基础知识 定时器【概念】
  • Go语言实现DNS解析与域名服务:从基础到生产实践
  • SOLIDWORKS2025教育版集成了电气与自动化设计功能
  • 内存飙升但无 OOM?用 eBPF 捕获隐性内存泄漏事件
  • 7.23总结设备虚拟化技术
  • 统一服务入口——Spring Cloud Gateway
  • Unreal5从入门到精通之使用 Python 编写虚幻编辑器脚本
  • 旧手机部署轻量级服务器
  • 什么是MySQL 视图
  • MySQL binlog解析
  • 2.1 为什么定义tensor数据结构?
  • 前端面试专栏-工程化:29.微前端架构设计与实践
  • [Semantic Seg][KD]FreeKD: Knowledge Distillation via Semantic Frequency Prompt
  • Elasticsearch是什么?
  • SQL语句中锁的使用与优化
  • 计算机底层入门 05 汇编学习环境通用寄存器内存
  • 【菜狗处理脏数据】对很多个不同时间序列数据的文件聚类—20250722
  • PyTorch常用工具