leetcode.24|leetcode.24 - 两两交换链表中的节点
题目
swap-nodes-in-pairs
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
思路
思路还是挺简单的
- 最直接的思路就是一种方法,两步为步进,循环条件为有两个以上剩余节点
- 主要说一下递归方法,递归法首先考虑三点:终止条件,返回值,单次操作
具体实现可能有多种,这里只是其中一种:
(1)终止条件:只剩下一个节点或者没有后续节点
(2)返回值:子链头指针
(3)单次操作:交换节点,next指向下一层递归的返回值,即指向子链
# Definition for singly-linked list.
# class ListNode:
#def __init__(self, x):
#self.val = x
#self.next = Noneclass Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
pHead=head
pHeadNext=head.next
pHead.next=self.swapPairs(pHeadNext.next)
pHeadNext.next=pHead
return pHeadNext
非递归法:
# Definition for singly-linked list.
# class ListNode:
#def __init__(self, x):
#self.val = x
#self.next = Noneclass Solution:
def swapPairs(self, head: ListNode) -> ListNode:
new_h = ListNode(-1)
new_h.next = head
p1 = new_h
p2 = p1.nextwhile p2!=None and p2.next!=None:
p1.next = p2.next
p2.next = p1.next.next
p1.next.next = p2p1 = p2
p2 = p2.nextreturn new_h.next
以上 【leetcode.24|leetcode.24 - 两两交换链表中的节点】欢迎大家关注我的公众号
文章图片
半亩房顶
推荐阅读
- 你应该看透人生处处的交换
- 人与人之间的等价交换
- Springboot整合RabbitMQ(三)——Topic主题交换机
- 交换玩具
- 【交换礼物】褪色的街角(素画+明信片)
- 交换机vlan配置实训心得_交换机与VLAN的配置实验报告
- 计算机网络实验二交换机配置Cisco|计算机网络实验二交换机配置Cisco,计算机网络实验1 — Cisco交换机的配置
- 计算机网络交换机执行模式口令配置|计算机网络交换机执行模式口令配置,计算机网络基础——实验五 交换机配置.doc...
- 计算机网络|网桥与交换机
- 今天关键词(交换)