C++算法练习-day9——24.两两交换链表中的节点

DESeq2实战:如何用LRT检验分析基因表达随时间变化的模式(附完整代码) 本文详细介绍了如何使用DESeq2中的LRT检验分析基因表达随时间变化的模式,包括实验设计、数据预处理、模型构建、结果提取与可视化等完整流程。通过实战案例和完整代码,帮助生物信息学研究者掌握时间序列RNA-seq分析的核心技术,特别适合需要快速上手的实践者。 阅读详情

题目来源:. - 力扣(LeetCode)

题目思路分析

题目:给定一个单链表的头节点 head,请你编写一个函数,将链表中的节点成对交换,返回交换后的链表头节点。

思路:

  1. 递归法:
    • 终止条件:如果链表为空或只有一个节点,直接返回该节点。
    • 递归步骤:
      • 设定一个新的头节点 newhead 为当前头节点的下一个节点(即要交换的第二个节点)。
      • 递归调用 swapPairs 函数,传入 newhead->next(即当前要处理的对之后的链表部分),并将结果赋值给当前头节点的 next。
      • 将 newhead 的 next 指向当前头节点,完成这一对节点的交换。
      • 返回新的头节点 newhead。

代码:

/**  
 * 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==NULL || head->next==NULL){  
            return head;  
        }  
          
        // newhead 是当前要交换的第二个节点,也就是新链表的头节点  
        ListNode* newhead=head->next;  
          
        // 递归调用 swapPairs 函数,传入 newhead->next,即当前要处理的对之后的链表部分  
        // 将结果赋值给当前头节点的 next,完成递归链表的构建  
        head->next=swapPairs(newhead->next);  
          
        // 将 newhead 的 next 指向当前头节点,完成这一对节点的交换  
        newhead->next=head;  
          
        // 返回新的头节点 newhead  
        return newhead;  
    }  
};

知识点摘要

  1. 链表基础:
    • 链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。
    • 单链表是指每个节点只有一个指向下一个节点的指针。
  2. 递归:
    • 递归是一种解决问题的方法,其中函数直接或间接地调用自身。
    • 递归函数通常包含一个或多个基准条件,用于终止递归调用。
  3. 链表节点交换:
    • 链表节点交换通常涉及调整节点间的指针,而不是数据值本身。
    • 在本问题中,通过调整指针实现节点对的交换。

通过这道题目,我们学会了如何使用递归方法解决链表节点成对交换的问题。递归方法虽然简洁,但也需要仔细考虑基准条件和递归步骤,以避免陷入无限递归或导致内存泄漏。此外,对链表操作的理解也是解决此类问题的关键,特别是节点指针的调整。通过实践,我们可以更好地掌握递归和链表操作的相关知识,为更复杂的问题打下坚实的基础。

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道 在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。 阅读详情

相关推荐

FPGA远程升级避坑实录:用STARTUPE2原语搞定Flash时钟,K7325T实测有效

本文深入解析了FPGA远程升级中的STARTUPE2原语应用,特别针对K7325T芯片的Flash时钟问题提供了实测有效的解决方案。通过详细的原语工作机制、Vivado工程实现步骤及调试技巧,帮助工程师规避常见陷阱,提升远程升级的可靠性和效率。

weixin_42558093的博客 141

代码随想录|算法训练营Day4|24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II

链表的四道核心算法题,三道中等,一道简单。

weixin_43978140的博客 1586

RustDesk网页端远程控制实战:如何用Web Client替代传统客户端(附安全配置建议)

本文详细介绍了RustDesk网页端远程控制的实战应用,包括其核心优势、配置流程及安全加固方案。通过Web Client替代传统客户端,用户可实现跨平台无缝体验和企业级管理效率,特别适合临时协作和移动设备使用。文章还提供了JWT身份验证、LDAP集成等安全配置建议,确保网页端访问的安全性。

weixin_30836759的博客 254

代码随想录Day4|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、02.07.链表相交、142.环形链表II

补打卡()

sleepwhite的博客 1918

保姆级教程:在RK3576上配置USB网卡从零到外网访问(附udev规则详解)

本文提供了在RK3576开发板上配置USB网卡的完整教程,涵盖从内核驱动、udev规则到网络路由的全流程。重点讲解了如何利用USB Gadget功能实现高速网络连接,并构建稳定的算力集群,确保多设备间通信及外网访问。

grass的博客 460

UE5网络同步优化:GetLifetimeReplicatedProps高级应用指南

本文深入探讨了UE5中GetLifetimeReplicatedProps函数的高级应用与优化策略。文章超越了基础变量注册,重点阐述了如何通过精细的复制条件控制、频率管理及分层复制机制,构建高效的数据同步通道,从而优化网络带宽与游戏性能,是提升多人游戏体验的实用指南。

weixin_29007243的博客 533

算法训练营 Day4-链表 2 | 24.两两交换链表中的节点 | 19.删除链表的倒数第 N 个节点 | 面试题 02.07. 链表相交 | 142.环形链表 II

这篇文章围绕算法训练营 Day4 的链表相关题目展开,介绍了 4 道力扣题目,包括两两交换链表中的节点、删除链表的倒数第 N 个节点、链表相交、环形链表 II,以 C++ 语言为例给出多种解题代码,涵盖递归、迭代、双指针、哈希表等方法,并分析了各方法的时间和空间复杂度,还提出解题过程中的疑问及思考,如虚拟头节点的运用、不同链表操作技巧、如何优化解法等内容。

2401_84085652的博客 800

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

Studying-代码随想录训练营day4| 24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II

力扣:24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II

yachihaoteng的博客 1311

GEE 案例:基于陆地卫星8号(大气层顶反射率数据)LANDSAT/LC08/C02/T1_TOA的生态遥感指数RSEI计算、可视化和下载

摘要:基于GEE的遥感生态指数(RSEI)计算方法 本文介绍了利用Google Earth Engine(GEE)平台计算遥感生态指数(RSEI)的全流程方法。主要内容包括:研究区域定义、Landsat8数据获取与去云预处理、关键生态指标计算(地表温度LST、植被指数NDVI、湿度指数WET和建筑指数NDBSI)、主成分分析(PCA)降维处理,以及结果可视化与数据导出。通过结合多源遥感指标并采用归一化处理,构建了综合反映区域生态环境质量的RSEI指数。该方法为生态环境监测提供了高效的技术方案,所有计算过程均

此星光明博客 458

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

如何高效学习Java? 毕业设计项目应该怎么做?入门实战项目应该怎么做? 做Java开发都应该学习哪些框架技术? 我想来跟你聊聊为什么要学习此专栏?我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,当你迷茫想努力没有方向时,最事半功倍的方法是:找人带你! 因为过来人,更懂得如何学、如何做、如何少走弯路! 那今天就给大家带来一门专栏课程,由 天罡gg 和 经海路大白狗 两位实力大牛合力打造的一款专栏,可以让你从0到1快速拥有企业级规范的项目实战经验!

天罡gg的专栏 2万+

Day8 [LeetCode中等] 24. 两两交换链表中的节点

Day8: [LeetCode中等] 24. 两两交换链表中的节点 题源: 来自leetcode题库: https://leetcode-cn.com/problems/swap-nodes-in-pairs/ 思路: 没什么好说的,虽然难度是中等但都是链表基本操作,稍微注意一下特殊情况就行。 代码: dirty code凑合看吧 /** * Definition for singly-lin...

qq2215459786的博客 160

C#串口通信从入门到精通(11)——串口接收的数据存储到本地文件(txt、csv)

本文详细介绍如何将串口通信将数据进行本次存储,主要介绍常用的csv、txt格式文件,由多年实战经验总结,绝对干货!

qq_34059233的博客 7239

LeetCode-Day101(C++) 24. 两两交换链表中的节点

两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3: 输入:head = [1] 输出:[1] 提示: 链表中节点的数目在范围 [0, 100] 内 0 <= Node.val <= 100 进阶:你能在不修改链表节点值的情况下解决这个问题吗?(也就是说,仅修改.

weixin_45401129的博客 344

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

刷题计划 day3 【移除链表元素,反转链表,交换链表中的节点】链表上

⚡刷题计划day3继续,可以点个免费的赞赞哦,往期可看专栏,关注不迷路,您的支持是我的最大动力🌹~

weixin_72499901的博客 804

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

代码随想录C++ Day4 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

nullptr,保证至少有两个节点,节点数为奇数时,最后一个节点自然就剩了下来,不用交换。设置快慢指针,快指针一步走两个节点,慢指针一步走一个节点,快指针相对慢指针的速度是一个节点,因此慢指针入环之后,快指针不会跨过慢指针,因此快指针最多转两圈(慢指针最多转一圈)两者就相遇了。具体查看代码随想录思路详解。双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。

blackdog_的博客 921

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

代码随想录算法训练营DAY04|链表Part02|LeetCode: 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

第二题一开始的思路存在点问题,导致花费了挺长时间,看懂第二题以后,第三题就比较容易想到使用双指针法。第四题确实需要一定的数学方法,特别是为什么第一次在环中相遇,慢指针的步数 是 x+y 而不是 x + 若干环的长度 + y,这一题需要多多回顾!

ning1437589742的博客 1245

Day78 | 灵神 | 反转链表 两两交换链表中的节点

1.建立虚拟头结点t,作为要反转部分[1,2]的前一个节点,以后每反转一部分都要更新和保存反转部分的前一个节点。6.更新并保存t,把t更新为1,即pre,因为pre是下一段要反转部分[3,4]的前一个节点。3.建立两个指针指向要交换的两个节点,cur指向2,pre指向1。用第一个例子[1,2,3,4,5]作为说明,就是说,步骤为。2.再次建立一个临时节点q保存要反转部分的后一个结点[3]这道题就是下面这道题的k==2的情况。5.把反转部分接到原来链表上。4.反转指针把2指向1。

m0_74795952的博客 344

算法训练营|Day4|链表

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

weixin_45199813的博客 1171

算法day4 链表(Leetcode24. 两两交换链表中的节点,Leetcode19.删除链表的倒数第N个节点,Leetcode160.链表相交,Leetcode142.环形链表II)

思路:使用虚拟头节点,利用双指针表示,如图: 代码: 时间复杂度:O(n) 空间复杂度:O(1) Leetcode19.删除链表的倒数第N个节点 思路:双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。代码: 时间复杂度: O(n) 空间复杂度: O(1) Leetcode160.链表相交 思路:简单来说,就是求两个链表交点节点的指针。 (指针相等而不是值相等)为了方便

qq_53601004的博客 679

代码随想录Day04:24.两两交换链表中的节点 、19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交 、142.环形链表II

在这篇文章关于链表,你该了解这些!链表的种类主要为:单链表,双链表,循环链表链表的存储方式:链表的节点在内存中是分散存储的,通过指针连在一起。链表是如何进行增删改查的。数组和链表在不同场景下的性能分析。

旺仔的博客 1605

代码随想录算法训练营DAY4| C++链表Part.2|LeetCode:24.两两交换链表中的结点、19.删除链表的倒数第N个结点、面试题 02.07. 链表相交、142.环形链表II

画一个图,很容易能发现,cur结点必须在待交换的两个结点之前,并且我们还需要一个temp结点保存待交换两个结点之后的一个结点。设计两个指针相遇,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。状态:想到了用快慢指针的办法,但是思路还是有问题,一定要分开讨论什么时候有环,在找到环了基础上如何推理出环的入口,同时需要用一点纯数学的思路。,这样就通过index2找到了环的入口处。

糖炒栗子 1215

数据结构与算法学习day06-两两交换链表中的节点

【代码】数据结构与算法学习day06-两两交换链表中的节点。

weixin_48990728的博客 207

代码随想录算法训练营Day04 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 、160.链表相交、142.环形链表II

思路:1.使用虚拟头节点,将对原头节点的操作与链表内部节点统一化;2.明确交换某两个节点的交换方式,通过循环的方式对链表中所有的节点执行此操作。

m0_64584610的博客 792

【Day4】24两两交换链表中的节点、19删除链表的倒数第N个节点、链表相交、142环形链表Ⅱ

代码随想录 链表

weixin_45768644的博客 602

代码随想录Day4| LeetCode 24 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

一定是快指针先进入这个环,然后慢指针才进入这个环,快在追慢的过程,快指针是以什么速度接近慢指针呢。相对于慢指针快指针的速度是每次移一个节点的移动速度。所以他两一定会相遇。此时我们就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。为了方便举例,假设节点元素数值相等,则节点指针相等。从起始位置到入口处x,相遇到入口y,y到出口是z。

luyimin87的博客 1006
上一篇: C++算法练习-day10——142.环状链表2
下一篇: C++算法练习-day11——242.有效的字母异位词
Neophyte0608
博客等级 码龄3年 808粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neophyte0608

你的鼓励将使我创作学的更加快乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值