Swap Node In Pairs Problem Solution

Swap Node 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.)

Example:

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

Swap Node In Pairs Problem Solution

Problem Solution In Python

def swapPairs(self, head: ListNode) -> ListNode:
    h = head
    while head and head.next:
        head.val, head.next.val = head.next.val, head.val
        head = head.next.next
    return h

Problem Solution In Java

public ListNode swapPairs(ListNode head) {
        ListNode n = helper(head);
        return n; 
    }
    
    public ListNode helper(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }    
        
        ListNode tmp = head;
        ListNode next = head.next;
        
        head.next = next.next;
        next.next = tmp; 
        head.next = helper(head.next); 
        return next;
    }

Problem Solution In C++

void _swapPairs(ListNode* odd, ListNode* even, ListNode** prev) {
        if (!odd || !even) return;
        *prev = even;
        ListNode* temp = even->next;
        even->next = odd;
        odd->next = temp;
        _swapPairs(odd->next, odd->next ? odd->next->next: NULL, &odd->next);
    }
    ListNode* swapPairs(ListNode* head) {
        _swapPairs(head, head ? head->next : NULL, &head);
        return head;
    }

Problem Solution In C

struct ListNode* swapPairs(struct ListNode* head) {
    typedef struct ListNode Node;
    Node *root  = head;
    Node *prev = NULL;
    int temp;
    int count = 0;
    while(head != NULL){
        if(count %2 == 1){
            temp = prev->val;
            prev->val = head->val;
            head->val = temp;
        }
        prev = head;
        head = head->next;
        count++;
    }
    return root;
}

Shares
facebook sharing button Share
twitter sharing button Tweet
whatsapp sharing button Share
telegram sharing button Share
pinterest sharing button Pin

Leave a Comment