Friday, February 20, 2015

LeetCode [24] Swap Nodes in Pairs

 24. Swap Nodes in Pairs

Medium

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

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

Example 2:

Input: head = []
Output: []

Example 3:

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

 

Constraints:

  • The number of nodes in the list is in the range [0, 100].
  • 0 <= Node.val <= 100
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head==null || head.next==null) return head;
        ListNode H = new ListNode();
        H.next = head;
        ListNode prev = H, p1 = head, p2 = head.next;
        while(p2!=null){
            ListNode next = p2.next;
            p2.next = p1;
            p1.next = next;
            prev.next = p2;
            prev = p1;
            
            if(next==null || next.next==null) break;
            p1 = next;
            p2 = p1.next;
        }
        return H.next;
    }
}

No comments:

Post a Comment