【LeetCode热题100】24. 两两交换链表中的节点(链表)

一.题目要求

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

二.题目难度

中等

三.输入样例

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

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

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

提示:
链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100

四.解题思路

解法1:迭代
解法2:递归

五.代码实现

迭代

/*** 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 *dummy = new ListNode(-1);dummy->next = head;ListNode *lpre = dummy;ListNode *rpre = dummy->next;if(head == nullptr || head->next == nullptr) return head;while(lpre && rpre && rpre->next){lpre->next = rpre->next;rpre->next = rpre->next->next;lpre->next->next = rpre;lpre = rpre;rpre = lpre->next;}return dummy->next;}
};

递归

/*** 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;}};

六.题目总结

递归分析

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.hqwc.cn/news/537939.html

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

相关文章

武汉星起航:创新驱动,共赢未来,引领跨境电商新潮流

在跨境电商这个充满挑战与机遇的领域&#xff0c;武汉星起航凭借其创新思维和共赢理念&#xff0c;正引领着行业发展的新潮流。 武汉星起航深知创新是企业在激烈竞争中立于不败之地的关键。公司始终关注市场动态&#xff0c;紧跟行业趋势&#xff0c;不断探索新的商业模式和运…

【Redis】Redis常用命令一

1.keys&#xff1a;返回所有满足条件的key&#xff0c;比如&#xff1a; KEYS pattern时间复杂度&#xff1a;O(N)&#xff0c;返回值&#xff1a;匹配pattern的所有key。 • h?llo 匹配 hello , hallo 和 hxllo • h*llo 匹配 hllo 和 heeeello • h[ae]llo 匹配 hello 和 …

回收站清空了怎么恢复回来?这四种回收站数据恢复方法要知道

在使用电脑的过程中&#xff0c;我们难免会遇到误删文件的情况。一旦不小心清空了回收站&#xff0c;那些被删除的文件似乎就永远消失了。但其实&#xff0c;在一定条件下&#xff0c;我们还是有机会恢复这些文件的。本文将介绍四种不同的方法&#xff0c;帮助你在回收站清空后…

刷题日记——礼炮车(厦门大学机试)

例题——礼炮车 方法一&#xff1a;按照开炮时间对时间间隔取余 第一炮设置都是第0秒打响&#xff0c;那么&#xff1a; 间隔为5的炮车打响第n炮&#xff0c;应该在&#xff08;n-1&#xff09;*5秒间隔为6的炮车打响第n炮&#xff0c;应该在&#xff08;n-1&#xff09;*6秒…

STM32 晶振(用示波器测RCC频率是否一致)

如果测出的频率不准确&#xff0c;可以修改一下看看是否有改善&#xff1a;

合合信息旗下启信宝3·15黄金市场洞察:新增企业量5年连降

近期&#xff0c;国际金价持续走高&#xff0c;国内黄金价格也随之“水涨船高”。然而&#xff0c;处于“高水位”的价位不仅未能浇灭大众对黄金饰品的热情&#xff0c;反而催化了“越涨越买”的消费趋势。与消费量的增长伴生的是激增的产品投诉量&#xff0c;黄金饰品行业的发…

Excel生成 chart 混合图表

在开发中有这样一个需求&#xff0c;邮件预警的时候&#xff0c;要求邮件主体内容是一个Chart 图表&#xff08;生成后的img&#xff09;&#xff0c;邮件需要有附件&#xff0c;且附件是Excel列表加图表&#xff0c;图表类型是混合图。 回顾&#xff1a;在之前一篇讲到如何使用…

web项目的搭建

使用Webstorm并创建Next.js文件 1、配置nodejs环境、安装webstorm【配置node.js可以使用nvm去管理nodejs的版本】 2、需要破解webstorm&#xff0c;可能会导致原本的idea失效&#xff0c;注册码过期 3、taobao的npm过期&#xff0c;导致npm is sass执行不成功&#xff0c;需…

【嵌入式——QT】QPainter基本绘图

【嵌入式——QT】QPainter基本绘图 QPainter与QPaintDevicepaintEvent事件和绘图区QPainter主要属性QPen主要功能QBrush主要功能QPainter绘制基本图形方法图示代码示例 QPainter与QPaintDevice QPainter是用来进行绘图操作的类&#xff0c;QPaintDevice是一个可以使用QPainter…

EI级 | Matlab实现PCA-GCN主成分降维结合图卷积神经网络的数据多特征分类预测

EI级 | Matlab实现PCA-GCN主成分降维结合图卷积神经网络的数据多特征分类预测 目录 EI级 | Matlab实现PCA-GCN主成分降维结合图卷积神经网络的数据多特征分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PCA-GCN主成分降维结合图卷积神经网络的数据多…

算法执行顺序(科拉多·伯姆,朱塞佩·贾可皮尼)

一.三大算法&#xff08;逻辑跳转&#xff09; 二.break 与 continue ---杨同学---

线程工具类与原子类

参考文档&#xff1a; CountDownLatch、CyclicBarrier、Semaphore的用法和区别juc15_基本AtomicInteger、数组、引用AtomicStampedReference、对象的属性修改原子类 AtomicIntegerFieldUp 、原子操作增强类LongAdder 辅助工具类 CountDownLatch(闭锁) 做减法 允许一个或多个…