LeetCode 24. 两两交换链表中的节点(Python)

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

思路:由于是以2为周期来交换顺序,所以可以定义两个指针node1和node2,每次翻转这两个指针所指向的节点,为了简便处理头结点,故定义新的虚拟节点dummyNode,为了实现翻转操作还应该定义node2的下一个next指针

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        dummyHead = ListNode(0)
        dummyHead.next = head

        p = dummyHead
        while p.next and p.next.next:
            node1 = p.next
            node2 = p.next.next
            next = node2.next

            node2.next = node1
            node1.next = next
            p.next = node2

            p = node1
        
        return dummyHead.next
发布了88 篇原创文章 · 获赞 98 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/HNU_Csee_wjw/article/details/103463815
今日推荐