Leetcode 24 Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list’s nodes (i.e., only nodes themselves may be changed.)

image
Input: head = [1,2,3,4] Output: [2,1,4,3]

Input: head = []
Output: []


Input: head = [1]
Output: [1]

  • Soruda bize bir linked list veriliyor ve nodeları ikili olarak ters çevirmemiz isteniyor.
  • Listenin başına dummy bir node koyarak bir çok sorunu halledebiliriz.
  • Daha sonra nodeları ikili olarak ters çeviririz.
class Solution:

    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummy = ListNode(0,head)
        prev, curr = dummy, head
        
        while curr and curr.next:
            #save ptrs
            nxtPair = curr.next.next
            second = curr.next
            
            #reverse this pair
            second.next = curr
            curr.next = nxtPair
            prev.next = second
            
            #update ptrs
            prev = curr
            curr = nxtPair
            
        return dummy.next