【链表 - LeetCode】24. 两两交换链表中的节点

24. 两两交换链表中的节点 - 力扣(LeetCode)

题解:

- 迭代

首先是直接遍历的做法,这里注意调整指针指向的顺序。

/*** 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* swapPairs(ListNode* head) {ListNode * dummyHead = new ListNode(0);dummyHead -> next = head;ListNode * tmp = dummyHead;ListNode*first, *second; // 反转前后用到的临时节点while(tmp->next!=nullptr && tmp->next->next!=nullptr){first = tmp->next;second = tmp->next->next;// 先调整tmp,再调整 first,再调整 secondtmp -> next = second;first -> next = second -> next;second -> next = first;tmp = first;}ListNode * ans = dummyHead -> next;delete dummyHead;return ans;}
};

- 递归

递归的本质在于直接处理最小子集。

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

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

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

相关文章

爬虫基础学习-链接协议分析,熟悉相关函数

1、urlparse:(python标准库中的一个模块,解析和操作url)标准的url链接格式:scheme://netloc/path;params?query#fragmentscheme(协议) http or https netloc(网络位置) …

kkfileview预览Excel文件去掉左上角的跳转HTML预览、打印按钮

上篇说了使用nginx代理kkfile预览文件,但是又发现个新问题,预览其他文件时都正常,但是预览.xlsx格式的时候,在左上角会有【跳转HTML预览】【打印】两个按钮,如下所示:这篇就来说一下如何去掉。首先这个跟kk…

阿里开源新AI code工具:qoder功能介绍

下载地址: https://qoder.com/ 文档地址: https://docs.qoder.com/ 文章目录1. AI 编码发展趋势2. 真实世界软件开发的挑战3. 我们的方法3.1. 透明度3.1.1. 知识可见性3.1.2. 执行透明度3.2. 增强上下文工程3.3. 规范驱动与任务委托3.3.1. 聊天模式&…

什么是短视频矩阵系统企业立项功能源码开发,支持OEM

短视频矩阵系统企业立项功能源码开发解析在短视频行业蓬勃发展的当下,企业纷纷布局短视频矩阵,以实现多平台、多账号的协同运营。而企业立项作为短视频矩阵项目启动的关键环节,其高效、规范的管理直接影响项目的推进效率与成果。为此&#xf…

当GitHub宕机时,我们如何协作?

问题背景与影响 GitHub作为主流代码托管平台的依赖现状宕机对分布式团队、CI/CD流水线、紧急修复的影响案例其他类似平台(GitLab、Bitbucket)的潜在连带风险 本地与离线协作方案 利用Git分布式特性:本地仓库继续提交,恢复后同步搭…

【会议跟踪】Model-Based Systems Engineering (MBSE) in Practice 2025

会议主旨与议题 会议宣传链接:https://www.sei.cmu.edu/events/mbse-in-practice/ 本次会议将于2025年8月21日位美国弗吉尼亚州阿灵顿(五角大楼所在地)举行。本次会议主旨为 MBSE in Practice: Bridging the Gap Between Theory and Success(2025)。随着软件定义系统日趋…

浏览器的渲染流程:从 HTML 到屏幕显示

在我们日常使用浏览器浏览网页时,往往忽略了浏览器背后复杂的渲染过程。从输入 URL 到页面最终显示在屏幕上,浏览器需要经过一系列精心设计的步骤。 浏览器渲染的整体流程浏览器的渲染流程可以大致分为两个主要部分:网络 和 渲染。当用户在地…

FastMCP 客户端服务器通信示例:从入门到实战(STDIO 传输)

引言 在现代分布式系统和AI应用中,模型上下文协议(MCP)扮演着重要角色,它负责协调客户端与服务器之间的通信,尤其是在需要频繁交互的场景中。本文将介绍如何使用FastMCP库快速实现客户端与服务器之间的通信&#xff0c…

宝可梦肉鸽 PC/手机双端 多种存档 全闪光 无限金币 全宝可梦解锁 免安装中文版

网盘链接: 宝可梦肉鸽 免安装中文版 名称:宝可梦肉鸽 PC/手机双端 多种存档 全闪光 无限金币 全宝可梦解锁 免安装中文版 描述:宝可梦肉鸽修改版是一款非常受欢迎的口袋妖怪系列,游戏拥有许多独特的妖怪和玩法。在游戏中&#…

Linux 下的网络编程

1、目的实现不同主机上进程间的通信。2、问题主机与主机之间在物理层面必须互联互通。进程与进程在软件层面必须互联互通。IP地址:计算机的软件地址,用来标识计算机设备。MAC地址:计算机的硬件地址(固定)。网络的端口号…

Go语言在边缘计算中的网络编程实践:从入门到精通

一、引言 在数字化浪潮席卷全球的今天,边缘计算如同一股清流,正在重新定义我们对网络架构的理解。想象一下,当你在自动驾驶汽车中需要毫秒级响应,或者在偏远工厂中需要实时处理传感器数据时,传统的云计算模式就像是&qu…

ASPICE过程能力确定——度量框架

🚗【汽车人必看】ASPICE能力评估核心:度量框架全解析|90%工程师都搞不懂的评分规则!🔍 为什么你的ASPICE评估总卡在L2?——揭秘6大能力等级背后的评分逻辑,附提升秘籍!🔥…

机器学习在量化中的应用

一、核心应用场景在因子研究中,scikit-learn 主要解决以下几类问题:因子预处理与标准化:StandardScaler, RobustScaler因子有效性分析:LinearRegression (IC分析)降维与因子合成:PCA, FactorAnalysis机器学习预测模型&…

RabbitMQ:消息转化器

目录一、基本概述二、如何处理一、基本概述 在RabbitMQ中,一般情况下传递字符串会被正常解析,如果传递的是一个Object类型或者是一个对象类型的时候,RabbitMQ会将其自动转化为字节码发送,这不利于我们的读取个解析。 二、如何处…

【Protues仿真】基于AT89C52单片机的LCD液晶显示屏显示控制

目录 1 LM016L液晶显示模块 1.1 基本参数 1.2 引脚定义 1.3硬件连接示例(AT89C52) 1.4 常用指令集(HD44780 子集) 1.5 常见问题与注意事项 1.8 结论 2 LM016L液晶显示模块控制电路原理图 3 LM016L液晶显示模块控制程序 …

孤独伤感视频素材哪里找?分享热门伤感短视频素材资源网站

你是不是也经常在抖音上刷到很火的伤感视频,那么伤感视频素材都在哪里可以下载呢?作为一名从业多年的视频剪辑师,今天就跟大家聊聊那些可以下载伤感素材高清无水印的网站,如果你也在苦苦找寻伤感素材,快来看看吧&#…

笔记本怎么才能更快散热?

一、“物理降温法”​▪️ 垫高高!别让底部 “窒息”​笔记本底部全是进风口,放床上 / 沙发上会被堵住!垫点东西拉开底部空间,高度 1-2cm。​▪️ 给风扇 “松绑”​按「CtrlShiftEsc」打开任务管理器,点 “进程”&…

电机驱动实现插补算法之脉冲和方向接收(以stm32主控为例)

一、方案 A(推荐):编码器模式吃脉冲(TI1 STEP,TI2 DIR) 核心思路 把定时器设为 Encoder TI1 模式:每个 STEP 上升沿计一次,在那个沿的瞬间用 TI2(DIR)的电…

[特殊字符] 潜入深渊:探索 Linux 内核源码的奇幻之旅与生存指南

文章目录 朋友们,敲黑板!!!(超级重要)我们今天聊点硬核的——不是普通的代码,而是驱动了整个数字世界心跳的Linux内核源代码!它藏在哪?就在那个传奇仓库:torv…

如何监控和管理微服务之间的调用关系

监控和管理微服务之间的调用关系需要结合分布式追踪、服务依赖分析、实时监控和可视化工具,以实现对调用链路的可见性、问题定位和性能优化。以下是具体的实现方案和工具链:一、核心监控目标调用链路可视化:展示服务间的调用关系、方向和频率…