For example,
Given
1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode swapPairs(ListNode head) { if (head == null) return null; ListNode helper = new ListNode(0); helper.next = head; ListNode pre = helper; ListNode p1 = head; ListNode p2 = p1.next; while (p2 != null) { pre.next = p2; p1.next = p2.next; p2.next = p1; pre = p1; p1 = p1.next; if (p1 != null) p2 = p1.next; else break; } return helper.next; } }
No comments:
Post a Comment