2. Leetcode 24 两两交换链表中的节点

2. 24 两两交换链表中的节点

24. 两两交换链表中的节点

# 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:
        """
        :param head: 链表的头结点
        :return:
        每一个节点由其val和指向下一个节点的指针构成
        self本身指向链表开始位置,但其没有next属性
        我们让pre指向self,pre.nex指向head来增加next属性
        因此pre, pre.next = self, head
        要链表从 pre -> a -> b -> b.next 变为 pre -> b -> a -> b.next
        pre.next, b.next = b, a
        b.next, a.next = a, b.next
        """

        pre, pre.next = self, head
        while pre.next and pre.next.next:
            a = pre.next
            b = a.next
            pre.next, b.next, a.next = b, a, b.next
            pre = a
        return self.next

Guess you like

Origin blog.csdn.net/weixin_39754630/article/details/116013058