当前位置:   article > 正文

每日一题python87:两两交换链表中的节点_python 链表交换两个节点的位置

python 链表交换两个节点的位置

题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4] 输出:[2,1,4,3]
示例 2:

输入:head = [] 输出:[]
示例 3:

输入:head = [1] 输出:[1]

提示:

链表中节点的数目在范围 [0, 100] 内 0 <= Node.val <= 100

程序说明:若没有使用哑节点,代码就如下面的错误代码,会出现若链表断开的情况(具体根据代码画图可知)
在这里插入图片描述

全部代码:
正确代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        p = ListNode(0)
        p.next = head
        cur = p
        while cur.next and cur.next.next:
            node1 = cur.next
            node2 = cur.next.next
            cur.next = node2
            node1.next = node2.next
            node2.next = node1
            cur = node1
        return p.next
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

错误代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        p = head
        cur = head.next
        q = cur.next
        while cur.next:  
            p.next = q
            cur.next = p
            p = q
            cur = p.next
            q = cur.next
        cur.next = p
        return head
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

题目来源:力扣(leetcode)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/数据科学创新者/article/detail/61257?site
推荐阅读
相关标签
  

闽ICP备14008679号