「递归算法」:两两交换链表中的节点

一、题目

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

示例 1:

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

示例 2:

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

示例 3:

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

二、思路解析

首先提醒一下,链表的题大家千万不要忘记递归解法,因为基本都是大问题可以拆解成相同的子问题的,符合递归的条件。

上来就可以先判断一下边界情况:头节点为空,或者只有一个节点,均返回头节点即可。

然后在每一次递归中,我们要做的就是利用一个节点 tmp ,来交换前后节点的指向即可。

三、完整代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if(head == null || head.next == null){return head;}ListNode tmp = swapPairs(head.next.next);ListNode ret = head.next;ret.next = head;head.next = tmp;return ret;}
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

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

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

相关文章

[力扣 Hot100]Day27 合并两个有序链表

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 出处 思路 简单题,两个指针就能解决。 代码 class Solution { public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if(!list1)…

Linux第55步_根文件系统第2步_测试使用busybox生成的根文件系统

测试使用busybox生成的根文件系统。测试内容较多,很杂。 1、修改“nfs-kernel-server” 1)、打开终端 输入“sudo vi /etc/default/nfs-kernel-server回车”,打开“nfs-kernel-server”文件。 输入密码“123456回车” 见下图: 2)、在最后…

情人节到了,写一份爱心程序(python)

前言 情人节到了,写一份爱心代码给喜欢的人呀 公式 首先我们介绍下爱心的公式的参数方程: x 16 s i n 3 ( t ) x 16sin^3(t) x16sin3(t) y 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y 13cos(t) - 5cos(2t) - 2co…

Kubernetes 核心概念

一、什么是 Kubernetes 1、含义: Kubernetes 是一个自动化的容器编排平台,它负责应用的部署、应用的弹性以及应用的管理。 2、核心功能: (1) 调度: Kubernetes 的调度器可以把用户提交的容器放到 Kubernetes 管理的集群的某一…

Android Studio 实现图书借阅(管理)系统

🍅文章末尾有获取完整项目源码方式🍅 目录 前言 一、任务介绍 1.1 背景 1.2目的和意义 二、 实现介绍 视频演示 2.1 启动页实现 2.2 注册页面实现 2.3 登陆页面实现 2.4 图书列表的实现 2.5 当前借阅页面实现 2.6 我的页面实现…

京东购物拉新保姆级教程

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

Java线程与进程

线程 概念 Java中,线程是程序执行的最小单位,它是进程的一个执行流,也是CPU调度和分配的基本单位。每个进程都可以运行多个线程,这些线程共享进程的内存块,但每个线程都有自己的堆栈和局部变量。 Java中的线程有两种…

Jmeter接口测试实战篇:10分钟学会Jmeter的用法

一提到接口测试,通常大家会有这样的疑问:前端测试不是已经覆盖到各种业务逻辑了吗?为什么还要做接口测试,接口测试和前端测试是不是重复了?对于这个问题,可以从下面几个方面来解释: 什么是接口…

JS中常用占位符使用方法详解_ |%s|%d|%f|%o|%O|%c|

在 JavaScript 中,%s 是一种字符串格式化占位符,用于将字符串插入到另一个字符串中的指定位置。这种方法基于 C 语言的 printf() 函数,但在 JavaScript 中有一些变化。 在 JavaScript 中,%s 可以接受任何类型的值,并将…

Python四级考试笔记

Python四级考试笔记【源源老师】 四级标准 一、 理解函数及过程、函数的参数、函数的返回值、变量作用域等概念。 二、 能够创建简单的自定义函数。 三、 理解算法以及算法性能、效率的概念,初步认识算法优化 效率的方法。 四、 理解基本算法中递归的概念。 五、 掌…

2024龙年特别篇 -- 魔法指针 之 指针开篇

你是否为 指针,指针变量,const修饰指针,野指针而感到困惑和不理解,接下来就让白子寰同学为你详细讲解!!! 注:该文章图片引用了小hong书博主:IT局内人 目录 指针 概念 计算机常见单位转换 指…

分享72个Html前端模板,总有一款适合您

分享72个Html前端模板,总有一款适合您 72个Html前端模板下载链接:https://pan.baidu.com/s/1ZVhDy6aMGc9fBl447d69yg?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集…