(Medium #24) Swap Nodes in Pairs

Problem

Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list's nodes, only nodes itself may be changed.

Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.

My solution

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

class Solution:
    def swapPairs(self, head):
        out = ListNode(0)
        out.next = ListNode(0)
        
        pre = out
        
        while True:
            print(head)
            if head == None:
                break
            if head != None and head.next == None:
                pre.next.next = ListNode(head.val)
                break              
            
            temp = ListNode(head.next.val)
            temp.next = ListNode(head.val)
            pre.next.next = temp
            pre = temp
            
            head = head.next.next
        
        return out.next.next
        
Runtime: 56ms, Memory: 14.1MB

댓글