For e.g:
Input: 1->2->3->4->5->6
Output: 2->1->4->3->6->5
There are 2 ways I could think by which we can solve this. Both methods take O(n) time.
Method 2 however is more elegant.
Method 1:
Method 2:
Input: 1->2->3->4->5->6
Output: 2->1->4->3->6->5
There are 2 ways I could think by which we can solve this. Both methods take O(n) time.
Method 2 however is more elegant.
Method 1:
public static Node swapNodes(Node head) { Node c = head; Node p = c; boolean headSet = false; while(c != null && c.next != null) { Node n = c.next; c.next = n.next; n.next = c; if(!headSet) { head = n; headSet = true; } else { p.next = n; p = c; } c = c.next; } return head; }
Method 2:
public static Node swapNodes(Node head) { Node c = head; // Create a dummy node before the head node Node dummy = new Node(); dummy.next = head; Node p = dummy; while(c != null && c.next != null) { Node n = c.next; c.next = n.next; n.next = c; p.next = n; p = c; c = c.next; } return dummy.next; }
No comments:
Post a Comment