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

news/2024/12/24 7:31:19/文章来源:https://www.cnblogs.com/Makerr/p/18442924

题目描述:

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

示例 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.hqwc.cn/news/806629.html

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

相关文章

第一章: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 …

【防忘笔记】测试过程与技术

测试人员应该想些什么 我自己是做后端的,对于模棱两可的需求和莫名其妙的测试case是深恶痛绝的,所以有时候我就会想测试人员应该会需要注意什么?以他们的角度,他们更在乎什么 最近有机会了解相关的知识,遂整理记录一下,以便之后在工作中更好的理解发生的各种事情 以客户为…

论文总结1--基于深度强化学习的四足机器人步态分析--2024.10.01

四足机器人的运动控制方法研究 1.传统运动控制 - 基于模型的控制方法目前,在四足机器人研究领域内应用最广泛的控制方法就是基于模型的控制方法,其中主要包括基于虚拟模型控制(Virtual Model Control,VMC)方法 、基于零力矩点(Zero Moment Point,ZMP) 的控制方法、弹簧…

Linux系统密码忘记

Linux系统密码忘记 1.故障背景误删除或修改/etc/passwd导致无法远程登录. 禁止root远程登录,没有添加普通用户,无法远程登录. root密码忘记,无法远程登录. linux无法启动.2.解决方法 root密码,恢复有备份的系统文件,都要重启系统,才能进入救援模式.解决方案 应用场景系统自带的…

应用中的错误处理概述

title: 应用中的错误处理概述 date: 2024/10/1 updated: 2024/10/1 author: cmdragon excerpt: 摘要:本文介绍了Nuxt中的错误处理机制,包括全局错误处理器和组件层级错误捕获,以及错误传递规则和生产环境下的处理方式 categories:前端开发tags:错误处理 Nuxt应用 全局处理…