Journal Archive

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var swapPairs = function(head) {
	// base case
    if (!head || !head.next) return head;
    
    const newHead = head.next;
    let curHead = head;
    
    while (curHead && curHead.next) {

        let temp = curHead;
        curHead = curHead.next;
        temp.next = curHead.next;
        curHead.next = temp;
        curHead = temp.next;
        // if another pair point to next one
        if (curHead && curHead.next) {
            temp.next = curHead.next;
        }
    }
    
    return newHead;
};

Day 75: Solving one of LeetCode problems

24. Swap Nodes in Pairs Difficulty - Medium

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 1:

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

Example 2:

Input: head = []
Output: []
		

Example 3:

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