leetcode24 两两交换链表中的节点(swap-nodes-in-pairs)

news/2024/10/1 16:07:49
###

题目描述:

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

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

 

提示:

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

 

###

解题思路:

 图片来源【灵茶山艾府】

代码

class Solution {
public:ListNode* swapPairs(ListNode* head) {// 对象在栈上分配内存,不需要手动释放内存// 指针在堆上分配内存,需要手动释放内存,避免内存泄漏ListNode dummy(0,head); //初始化列表的形式创建对象,作为哨兵节点auto node0=&dummy;auto node1=head;// 至少有两个节点while(node1 && node1->next){auto node2=node1->next;auto node3=node2->next;node0->next=node2;//0->2node2->next=node1;//2->1node1->next=node3;//3->1// 下一轮交换,node0=node1; //0是1node1=node3; //1是3
        }return dummy.next;}
};
###

思路总结:

  1. 引入哨兵节点:dummy对象作为哨兵节点,简化对链表头结点的处理逻辑
  2. 交换与遍历:使用多个指针遍历链表,在每次循环中找到待交换的两个结点及其后续结点,进行节点交换,然后更新指针,准备下一轮的交换
  3. 返回结果:循环结束,dummy.next作为新链表的头结点

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

第一章:Borel测度

第1章 Borel测度 在正式讨论我们的内容之前我们先做几点说明 1.我们只讨论\(\mathbb{R}^n\) 上的测度,因此如果不作特别说明,我们均认为测度和集合为于\(\mathbb{R}^n\) 中: 2.我们不特别区分外测度和测度,因为将外测度限制在可测集上就是可测集上的测度: 3.我们默认读者已…

TypeScript在vue中的使用-----事件类型的获取

当我们要对事件定义类型。一种是通过console.log(e)来看事件的类型。另外一种是@事件名的时候,将$event写好,鼠标放上去看事件类型。再讲$event删除。 如下: 然后我们定义函数的时候就可以指定事件类型了const clickMi = (e:MouseEvent)=>{console.log(e.pageX, e.pageY…

信息学奥赛复赛复习08-CSP-J2020-03表达式前置知识点-后缀表达式、栈、字符读取

PDF文档公众号回复关键字:202410011 P1449 后缀表达式 [题目描述] 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级) 本题中运算符仅包含 + - * / 。保证…

IDEA如何查看已经安装的插件并删除

前言 我们在使用IDEA开发时,经常需要安装一些插件来帮助我们高效快速的处理问题,可以说很实用。 不过有时候,我们不想使用某个插件了,或者某个插件突然不好用了,想要先删除下再安装,那么我们应该怎么删除我们已经安装的插件呢? 如何删除插件 首先,我们点击【File】->…

python中列表和字符串的相互转换

001、列表转换为字符串>>> list1 [xxx, yyy, zzz] >>> "".join(list1) ## 使用字符串内置函数join + 可迭代对象 xxxyyyzzz >>> "_".join(list1) xxx_yyy_zzz 002、字符串转换为列表>>> str1 = &qu…

Cookie,Session与Token

参考资料 水平有限,欢迎交流!仅做学习交流使用 一定要看,非常透彻!【Cookie、Session、Token究竟区别在哪?如何进行身份认证,保持用户登录状态?】 黑马jwt详解 Javaweb程序设计与项目案例 郭煦 直接上结论 共同点 Cookie,Session与Token 三者都实现了 Http 无状态这一特…

A. 2025--[炼石计划--NOIP模拟三]--T1--矩形

赛时草了个 \(O(n^4 \log (n))\) 竟然能过 70 分虽然本来就是这么分配的,发现正解只需将二分改为双指针就可以了,最气的是上面计算的时候用到还是尺取下面就用的二分(唐诗)。 其实这题就是暴力,然后在低级的暴力上加一些操作变得稍微高级一点。 计算的话直接暴力查找不同颜…

深度学习(UNet)

和FCN类似,UNet是另一个做语义分割的网络,网络从输入到输出中间呈一个U型而得名。 相比于FCN,UNet增加了更多的中间连接,能够更好处理不同尺度上的特征。 网络结构如下:下面代码是用UNet对VOC数据集做的语义分割。import torch import torch.nn as nn import torch.optim …