Leetcode链表刷题之:24.两两交换链表中的节点
发布日期:2022-02-05 22:03:45
浏览次数:1
分类:技术文章
本文共 1319 字,大约阅读时间需要 4 分钟。
题目描述:
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2:输入:ead = []
输出:[] 示例 3:输入:head = [1]
输出:[1]来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs解题思路及代码:
这道题目总体思路和之前的25题:K个一组旋转链表完全一致,只是把K设置成了2而已,解题思路依旧是:
1.先完成逆转2个一组的链表的方法;
2.接着在原始的链表中,进行两个一组的反转,直到遍历到链表的尾结点为止。
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): # n=2即为反转两个结点 def Reverse2(self, head, n): if n == 1: return head tail = head.next p = self.Reverse2(head.next, n-1) head.next = tail.next tail.next = head return p # 需要找到待旋转结点的上一结点,调用Reverse2(),并且判断剩余长度是否满足两两反转 def Reverse(self, head): p = head n = 2 while p and n > 1: n -= 1 p = p.next if p == None: return head return self.Reverse2(head, 2) def swapPairs(self, head): """ :type head: ListNode :rtype: ListNode """ ret = ListNode(0, head) p = ret q = p.next while 1: p.next = self.Reverse(q) if q == p.next: break p = q q = p.next return ret.next
运行结果:
转载地址:https://blog.csdn.net/lu_yunjie/article/details/114583975 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月07日 06时29分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信公众号的开始
2019-04-28
2.10. Wi-Fi
2019-04-28
Golang Ruby ASP PowerShell
2019-04-28
6.1. 信息收集 - Windows
2019-04-28
6.2. 持久化 - Windows
2019-04-28
6.3. 域渗透
2019-04-28
6.6. 痕迹清理
2019-04-28
6.7. 综合技巧
2019-04-28
7.1. 团队建设
2019-04-28
7.2. 安全开发
2019-04-28
7.4. ATT&CK
2019-04-28
7.6. 防御框架
2019-04-28
7.7. 加固检查
2019-04-28
技术文章系列分享朋友服务器惨遭挖矿的应急笔记
2019-04-28
8.2 JWT
2019-04-28
hydra详细使用教程
2019-04-28
Ubertooth one“蓝牙扫描嗅探”使用教程
2019-04-28
Nmap绕过防火墙扫描
2019-04-28
Nmap端口扫描+Nmap脚本扫描漏洞(学习笔记)
2019-04-28
9.4. 社会工程学
2019-04-28