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 - 两两交换链表中的节点】欢迎大家关注我的公众号

leetcode.24|leetcode.24 - 两两交换链表中的节点
文章图片
半亩房顶

    推荐阅读