給定一個(gè)鏈表,兩兩交換其中相鄰的節(jié)點(diǎn),并返回交換后的鏈表。
示例:
給定 1->2->3->4, 你應(yīng)該返回 2->1->4->3.
說明:
你的算法只能使用常數(shù)的額外空間沛硅。
你不能只是單純的改變節(jié)點(diǎn)內(nèi)部的值福青,而是需要實(shí)際的進(jìn)行節(jié)點(diǎn)交換摄狱。
用遞歸做比較方便,交換兩個(gè)節(jié)點(diǎn)无午,再對第三個(gè)節(jié)點(diǎn)遞歸調(diào)用即可媒役,注意處理好邊界條件。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if (head==null ) return head;
if (head.next==null) return head;
ListNode nnext = head.next.next;
ListNode tmp = head;
head = head.next;
head.next = tmp;
head.next.next= swapPairs(nnext);
return head;
}
}