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

【LeetCode 24】力扣算法:两两交换链表中的节点

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

提示:

  • 链表中节点的数目在范围 [0, 100] 内

  • 0 <= Node.val <= 100

image


这个题目比较简单,但要注意交换结点时,要先保存两个结点的值,再进行交换,不然会找不到结点。交换时还要注意交换代码的顺序。

算法步骤:

  1. 检查特殊情况:如果链表为空或只有一个节点,那么不需要交换,直接返回原链表的头节点。

  2. 创建虚拟头节点:为了避免在交换头节点时的特殊情况处理,我们可以创建一个虚拟头节点 dummyHead,它的 next 指向原链表的头节点。

  3. 遍历链表:使用一个循环来遍历链表,每次交换一对相邻的节点。

  4. 交换节点:对于每一对相邻的节点,调整它们的 next 指针来完成交换。

  5. 更新指针:在交换后,更新 p 指针到新的后一个节点,以便进行下一对节点的交换。

  6. 返回结果:返回虚拟头节点的下一个节点,即交换后的链表的头节点。

复杂度分析:

  • 时间复杂度:O (n),其中 n 是链表的长度。最多遍历链表一次。

  • 空间复杂度:O (1),我们只使用了常数级别的额外空间。

我的 Java 代码:

/*** 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)      return null;if(head.next==null) return head;// 创建虚拟头节点ListNode dummyHead = new ListNode(-1);dummyHead.next = head;ListNode p = dummyHead;// 遍历链表,交换每一对相邻的节点(当前p结点的后面两个结点)while(p.next!=null && p.next.next!=null){ListNode f = p.next;       //存储第一个结点ListNode s = p.next.next;  //存储第二个结点// 交换两个节点,先后顺序不能乱p.next = s;f.next = s.next;s.next = f;// 指针向后移动 两个 结点p = p.next.next;}return dummyHead.next;}
}
http://www.vanclimg.com/news/1413.html

相关文章:

  • Pwn2Own柏林2025:第三天赛事成果与技术漏洞全记录
  • POLIR-Laws-民事诉讼法:手机录音能否作为民事诉讼证据?怎么录音才能被法院采信?
  • MCP是如何工作的?
  • OBS
  • 屏幕翻译 安卓app
  • 微算法科技(NASDAQ:MLGO)应用区块链联邦学习(BlockFL)架构,实现数据的安全传输
  • 星球助手发布更新 v1.7.0
  • 使用Spring Cloud和Resilience4j实现微服务容错与降级 - spiderMan1
  • WinForm自定义控件实现类似百度网盘客户端菜单组件
  • 【比赛记录】2025CSP-S模拟赛29
  • 树形dp练习
  • python中 命令行参数解析模块 argparse
  • 基于YOLOv8的狗狗品种(多达60种常见犬类)品种鉴别识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
  • 公钥和私钥的部分作用
  • 使用 Kiro AI IDE 3小时实现全栈应用Admin系统
  • soildworks建模界面添加图片
  • 从0开始构建技术
  • Fastmcp 案例二(SSe)
  • Anaconda历史版本
  • 输入未知数目的数据
  • 常见的结构光编解码算法
  • 七月
  • HCIE学习之路:一个NAT实验
  • HCIE学习之路:配置基于静态路由的GRE隧道
  • TOP10迪士尼动画电影下载_公主系列迪士尼电影大全列表在线观看
  • python中pandas包的基本用法
  • 如何用两年时间面试一个人(by jobleap.cn)
  • 2025年PLM合规性管理,6大策略,确保项目合法合规!
  • 如果你还有一些困惑 / 请贴着我的心倾听 - Urd
  • 【IEEE出版】第五届计算机应用、视觉与算法国际学术会议(CVAA 2025)