【LeetCode with Python】 24. Swap Nodes in Pairs

题目

原题页面:https://leetcode.com/problems/swap-nodes-in-pairs/
本文地址:http://leetcode.xnerv.wang/swap-nodes-in-pairs/
题目类型:Medium
难度评价:Linked List
类似题目:(H) Reverse Nodes in k-Group

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.


分析

交换单链表中每一对相邻的奇偶数下标的元素,注意防止链表长度可能是奇数,即不要忘记检查second_node是否为None。


代码

class Solution:
    # @param a ListNode
    # @return a ListNode
    def swapPairs(self, head):
        if None == head:
            return head
        new_head = ListNode(0)
        new_head.next = head
        last_node = new_head
        while True:
            first_node = last_node.next
            if None == first_node:
                break
            second_node = first_node.next
            if None == second_node:
                break
            last_node.next,  first_node.next, second_node.next, last_node = second_node, second_node.next, first_node, first_node
        return new_head.next

results matching ""

    No results matching ""