Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
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.
Solution:O(n)
public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode n1 = dummy;
ListNode n2 = head;
while(n2!=null && n2.next!=null){
ListNode temp = n2.next.next;
n2.next.next = n1.next;
n1.next = n2.next;
n2.next = temp;
n1 = n2;
n2 = n1.next;
}
return dummy.next;
}
}
Key Concept: Use a dummp Node 0 and then do correct swap sequence.
沒有留言:
張貼留言