[Leetcode] 24. Swap Nodes in Pairs

来源:互联网 发布:用友导出excel数据出错 编辑:程序博客网 时间:2024/06/05 16:37

Problem:

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.

Idea:
Just do swap operation every two nodes. Therefore, after every swap operation, we need to move tmpNode backwards by two Nodes. Kindly note that the previous node should be recorded for the following swap operation.

Solution:

class Solution(object):    def swapPairs(self, head):        """        :type head: ListNode        :rtype: ListNode        """        preheadNode = ListNode(-1)        preheadNode.next = head        tmpNode = None if head == None else head.next        preNode = preheadNode        while tmpNode != None:            nextNode = tmpNode.next            tmpNode.next = preNode.next            preNode.next.next = nextNode            preNode.next = tmpNode            preNode = tmpNode.next            tmpNode = None if nextNode == None else nextNode.next        return preheadNode.next
0 0
原创粉丝点击