千家信息网

leetcode中如何解决两两交换链表中的节点问题

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,小编给大家分享一下leetcode中如何解决两两交换链表中的节点问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!题目链接https://leetcode-cn.com/proble
千家信息网最后更新 2024年11月14日leetcode中如何解决两两交换链表中的节点问题

小编给大家分享一下leetcode中如何解决两两交换链表中的节点问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

题目链接

https://leetcode-cn.com/problems/swap-nodes-in-pairs/

题目描述

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

解题方案

思路

  • 标签:链表

  • 本题的递归和非递归解法其实原理类似,都是更新每两个点的链表形态完成整个链表的调整

  • 其中递归解法可以作为典型的递归解决思路进行讲解

递归写法要观察本级递归的解决过程,形成抽象模型,因为递归本质就是不断重复相同的事情[1]。而不是去思考完整的调用栈,一级又一级,无从下手。如图所示,我们应该关注一级调用小单元的情况,也就是单个f(x)。

调用栈

其中我们应该关心的主要有三点:

  1. 返回值

  2. 调用单元做了什么

  3. 终止条件

在本题中:

  1. 返回值:交换完成的子链表

  2. 调用单元:设需要交换的两个点为head和next,head连接后面交换完成的子链表,next连接head,完成交换

  3. 终止条件:head为空指针或者next为空指针,也就是当前无节点或者只有一个节点,无法进行交换

代码

递归解法

class Solution {    public ListNode swapPairs(ListNode head) {        if(head == null || head.next == null){            return head;        }        ListNode next = head.next;        head.next = swapPairs(next.next);        next.next = head;        return next;    }}

非递归解法

class Solution {    public ListNode swapPairs(ListNode head) {        ListNode pre = new ListNode(0);        pre.next = head;        ListNode temp = pre;        while(temp.next != null && temp.next.next != null) {            ListNode start = temp.next;            ListNode end = temp.next.next;            temp.next = end;            start.next = end.next;            end.next = start;            temp = start;        }        return pre.next;    }}

画解

看完了这篇文章,相信你对"leetcode中如何解决两两交换链表中的节点问题"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

递归 节点 解法 单元 问题 两个 也就是 思路 指针 本题 条件 篇文章 题目 相同 不断 事情 代码 典型 写法 单个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库导入数据丢失 什么是客服服务器模式 闵行区微型软件开发服务试验设备 小蘑菇软件开发工具说明书下载 查看服务器当前登录用户的命令 五环智控软件开发 阿里云服务器进服务费 网络安全和信息化工作座 画饭圈乱象会网络安全 戴尔服务器外壳螺丝怎么拆 天津戴尔服务器续保安装 网站服务器假设 西南科技大学网络安全学院 军人如何守住网络安全阵地 光遇服务器有什么用 船运仓管数据库 mt4平台连接不到服务器 sql数据库中的特定字段 云服务器安全性描述 大型数据库技术》大作业 怎样设置我的主数据库 图书馆数据库课程分析 iis 反向代理服务器 二级代理 软件开发大专毕业好就业吗 电信 网络技术工程师职责 北京放心软件开发应用 淘宝买云服务器邀请代理 网络技术对我们的影响 东南大学考研网络安全专业 闵行区软件开发设计规范
0