leetcode中如何解决两两交换链表中的节点问题
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,小编给大家分享一下leetcode中如何解决两两交换链表中的节点问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!题目链接https://leetcode-cn.com/proble
千家信息网最后更新 2024年11月12日leetcode中如何解决两两交换链表中的节点问题
小编给大家分享一下leetcode中如何解决两两交换链表中的节点问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
题目链接
https://leetcode-cn.com/problems/swap-nodes-in-pairs/
题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题方案
思路
标签:链表
本题的递归和非递归解法其实原理类似,都是更新每两个点的链表形态完成整个链表的调整
其中递归解法可以作为典型的递归解决思路进行讲解
递归写法要观察本级递归的解决过程,形成抽象模型,因为递归本质就是不断重复相同的事情[1]。而不是去思考完整的调用栈,一级又一级,无从下手。如图所示,我们应该关注一级调用小单元的情况,也就是单个f(x)。
其中我们应该关心的主要有三点:
返回值
调用单元做了什么
终止条件
在本题中:
返回值:交换完成的子链表
调用单元:设需要交换的两个点为head和next,head连接后面交换完成的子链表,next连接head,完成交换
终止条件: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安全错误
数据库的锁怎样保障安全
360 服务器
数据库设计长度和字节
live555服务器
服务器网关有时不通
网络安全维护的实际情况
2017网络安全时间
从法院软件开发的公司
南京直销软件开发服务
网络安全法对负责人
阿里云服务器云盾关闭
怎么取消数据库用户口令
怎样设置凭证库服务器地址
网络安全行业市场分析
数据库如何修改只读模式
七牛图片服务器
厦门网络安全事件
acl网络安全实战
阿里采用的数据库管理系统
ps5双人同行连接不到ea服务器
vue项目如何发布到服务器
扬州九一网络技术有限公司
sql数据库连接池配置
商场系统软件开发工具
服务器更换阵列卡
服务器如何分配独立ip
数据库作业个人总结
网络安全语 句
淘宝服务器租用
雷鸣网络技术怎么样
软件开发需要的项目负责人