leetcode 24. 两两交换链表中的节点 (python3) 44ms

题目描述:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

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

解题思路:

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

class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        output = ListNode(0)
        tmp = output
        if head == None or head.next == None:
            return head
        first, second = head, head.next
        while(first or second):
            if second:
                tmp.next = second
                tmp = tmp.next
                first.next = tmp.next    
            tmp.next = first
            tmp = tmp.next
            if tmp.next:
                first = tmp.next
            else:
                first = None
                break
            if tmp.next.next:
                second = tmp.next.next
            else:
                second = None
        return output.next

算法性能:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lanmengyiyu/article/details/108470944
今日推荐