Given a linked list, swap every two adjacent nodes and return its head.
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.
題意:給定一個鏈表,成對交換鄰接的節點
解決思路:每次移動節點向前移動兩位,然後交換就可以了
代碼:
public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode newHead = new ListNode(0);
newHead.next = head;
for(ListNode curr = newHead; curr.next != null && curr.next.next != null; curr = curr.next.next){
curr.next = swap(curr.next, curr.next.next);
}
return newHead.next;
}
private ListNode swap(ListNode prev, ListNode after){
prev.next = after.next;
after.next = prev;
return after;
}
}