leetcode24. 两两交换链表中的节点,递归

news2024/11/18 7:34:27

leetcode24. 两两交换链表中的节点

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

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

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

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

在这里插入图片描述

题目分析

本题是关于链表中的节点两两交换的问题。给定一个链表,要求每两个节点一组进行翻转。例如,给定链表 1->2->3->4,翻转后变为 2->1->4->3。

算法选择

这个问题可以通过递归的方式来解决。递归的基本思想是将大问题分解为小问题,直到问题足够小可以直接解决。在这个问题中,我们可以将链表两两分组,然后递归地翻转每一组。

算法步骤

  1. 检查链表是否为空或只有一个节点,如果是,则直接返回链表。
  2. 创建一个新的头节点,指向原链表的第二个节点。
  3. 将原头节点与剩余链表(去除前两个节点)的翻转结果连接。
  4. 将新头节点的下一个节点设置为原头节点。
  5. 返回新头节点作为翻转后的链表的头。

算法流程

开始
检查链表是否为空或只有一个节点
返回链表
创建新头节点指向原链表的第二个节点
递归翻转剩余链表
将新头节点的下一个节点设置为原头节点
返回新头节点
结束

算法代码

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

算法分析

  • 时间复杂度:O(n),其中n是链表的节点数。因为每个节点只被访问和修改一次。
  • 空间复杂度:O(n),由于递归使用栈空间,其空间复杂度为O(n)。
  • 易错点:在连接节点时,要注意保持链表的连续性,避免出现断链或循环引用。
  • 注意事项:递归的终止条件要正确设置,以避免无限递归。

相似题目

题目题目链接
24. 两两交换链表中的节点点击访问
25. K 个一组翻转链表点击访问
61. 旋转链表点击访问

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

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

相关文章

[译] K8s和云原生

本篇内容是根据2019年8月份Kubernetes and Cloud Native音频录制内容的整理与翻译, Johnny 和 Mat 与 Kris Nova 和 Joe Beda 一起探讨了 Kubernetes 和云原生。他们讨论了 Kubernetes 推动的“云原生”应用的兴起、使用 Kubernetes 的合适场合、运行如此大型的开源项目所面临…

【Java】虚拟机(JVM)内存模型全解析

目录 一、运行时数据区域划分 版本的差异: 二、程序计数器 程序计数器主要作用 三、Java虚拟机 1. 虚拟机运行原理 2. 活动栈被弹出的方式 3. 虚拟机栈可能产生的错误 4. 虚拟机栈的大小 四、本地方法栈 五、堆 1. 堆区的组成:新生代老生代 …

叶国富学得会胖东来吗?

“大家都看不懂就对了,如果都看得懂我就没有机会了。”昨晚,实体零售迎来一则重磅消息,名创优品获得了全国第二大连锁超市永辉超市的大股东身份。在资本市场负反馈的压力下,名创优品创始人叶国富有了上述回应。 消息公布后&#x…

云服务器是干什么的?

随着云计算的发展,云服务器的功能逐步完善。但是还有不少用户不清楚云服务器是干什么的?云服务器提供了一种灵活、可扩展的计算解决方案,适用于各种在线业务和项目。提供虚拟化的计算资源是云服务器最基本也是最重要的功能。 云服务器是干什…

vue项目npm run serve 报错,Error: read ECONNRESET at TCP.onStreamRead

背景:vue2的项目,之前npm run serve一直可以正常使用,突然每次启动都会报错了,报错信息如下: node:events:492 throw er; // Unhandled error event ^ Error: read ECONNRESET at TCP.onStreamRead (n…

Android开发okhttp下载图片带进度

Android开发okhttp下载图片带进度 下载网络图片的方法有很多,这次介绍写用okhttp来下载网络图片,主要我看中的是用okhttp下载有进度返回,提示下用户 一、思路: 用OkHttpClient().newCall(request) 二、效果图: 三、…

“加密自由”受到威胁?Telegram已被“收编”?成立审核团队,提供用户数据!

近年来,随着加密货币和区块链技术的迅猛发展,Telegram作为一个重要的社交平台,因其对用户隐私的承诺和自由交流的环境,吸引了大量的用户。目前,Telegram已经成为加密货币市场最爱使用的全球通讯软件。 然而&#xff0c…

成都睿明智科技有限公司抖音开店怎么样?

在当今这个短视频与直播带货风靡的时代,抖音电商以其独特的魅力迅速崛起,成为众多品牌和企业竞相追逐的新蓝海。而在这场电商盛宴中,成都睿明智科技有限公司凭借其专业的服务、创新的策略以及深厚的行业洞察力,成为了众多商家信赖…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建斗地主

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建斗地主 华为云端口放行 服务器放行对应端口8078 Docker安装并配置镜像加速 1、购买华为云 Flexus X 实例 Flexus云服务器X实例-华为云 (huaweicloud.com) 2、docker安装 yum install -y docker-ce3、验证 Dock…

第52课 Scratch游戏入门:五子棋

五子棋 故事背景: 会下五子棋么?五个颜色一样的棋子,横竖斜向有五个连在一起,就胜利,让我们一起来绘制一个五子棋的棋盘,同时一起开始下棋吧! 开始编程 1、删除预设的猫咪角色,使用绘制工具绘制白色和黑色的棋子。(使用圆形和圆形渐变色填充棋子) 新绘制棋盘等其他角…

刷题日记_DAY1

前言 这里记录每日随机刷的错题 两个数组的交集(模拟) 题目描述 题目解析 题目要求返回指定的两个字符串之间的距离,容易想到的一种解法就是暴力遍历,来个双循环,但时间复杂度就为N^2,不符合题意 for(…

20240925 每日AI必读资讯

重磅!字节跳动发布豆包音乐模型和同声传译模型 - 包括音乐模型,同声传译模型、文生图2.0模型、新的基于DIT的视频生成模型S2.0、豆包通用模型pro、语音合成模型。 - 还发布了图像转视频口型同步模型和文本、音频驱动的数字人模型。 - 这些功能将全部集…

当大语言模型应用到教育领域时会有什么火花出现?

当大语言模型应用到教育领域时会有什么火花出现? LLM Education会出现哪些机遇与挑战? 今天笔者分享一篇来自New York University大学的研究论文,另外一篇则是来自Michigan State University与浙江师范大学的研究论文,希望对这个话题感兴趣…

visual studio 调试技巧

visual studio 调试技巧 概述 在使用visual studio 进行调试的时候,有几个调试方法很好用,这里做一些记录。 GTEST 单元测试 参考 VS2022创建C C GTEST工程 - Hello-FPGA - 博客园 (cnblogs.com) 内存查看 命令行测试动态库 附加到进程调试动态库 …

【Delphi】扩展现有组件创建新的 FireMonkey 组件(步骤二)

实现指定格式的属性 步骤 1 中创建的 TClockLabel 组件需要在显示当前时间时定义日期时间格式作为属性,以便组件用户可以指定。 一、实现指定格式的属性 要实现格式属性,请在 TClockLabel class 的发布部分添加以下一行: property Form…

Python【修炼1】

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:Python 目录 👉🏻字典(Dictionary)👉🏻列表(list)👉🏻eval函数…

k8s前置准备:配置虚拟机网络

目录 前言查看本机ip地址修改虚拟机配置修改linux配置配置其余linux机器的网络参考文献 前言 本文的最终目的是使虚拟机内可以访问互联网,虚拟机之间可以互相访问。 虚拟机使用的是vmware,环境是windows,虚拟镜像是linux系统。 使用桥接模式…

视频去水印 —— 释放创意,让学习与创作更自由!

🌟 视频去水印 —— 释放创意,让学习与创作更自由! 在这个短视频盛行的时代,抖音、快手、小红书等平台成为了创意与灵感的聚集地。你是否曾遇到过想要学习或进行二次创作,却被视频中的水印所困扰?现在&…

Spring Cloud Alibaba-(3)OpenFeign【服务调用】

Spring Cloud Alibaba-(1)搭建项目环境 Spring Cloud Alibaba-(2)Nacos【服务注册与发现、配置管理】 Spring Cloud Alibaba-(3)OpenFeign【服务调用】 Spring Cloud Alibaba-(4)Sen…

SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents论文学习

首先是惯例强调一下自己的工作是基于视觉的,不是那种拿一个html文件或者UI结构树给模型让他操作的工作。然后提出了一个很有意思的观点,认为Grounding能力(定位能力)对模型表现的影响非常大。 主要novelty就这几个: …