public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode p = head;
ListNode q = head;
if(head == null){
return head;
}else if(head.next == null){
return head;
}else{
p = head.next;
q = head.next.next;
p.next = head;
head.next = swapPairs(q);
return p;
}
}
}
做了将近一个小时才提交通过,之前打算用循环来做的,不过会丢失数据(如下所示):
public class SwapPairsMain
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
ListNode t = new ListNode(11);
ListNode t1 = new ListNode(12);
ListNode t2 = new ListNode(13);
ListNode t3 = new ListNode(14);
ListNode t4 = new ListNode(15);
ListNode t5 = new ListNode(16);
ListNode t6 = new ListNode(17);
ListNode t7 = new ListNode(18);
ListNode t8 = new ListNode(19);
ListNode t9 = new ListNode(21);
ListNode t10 = new ListNode(31);
t.next = t1;
t1.next = t2;
t2.next = t3;
t3.next = t4;
t4.next = t5;
t5.next = t6;
t6.next = t7;
t7.next = t8;
t8.next = t9;
t9.next = t10;
ListNode res = swapPairs(t);
while(res != null){
System.out.print(res.val + " ");
res = res.next;
}
System.out.println();
}
public static ListNode swapPairs(ListNode head) {
ListNode res = head;
ListNode p = head;
ListNode q = head;
int i = 0;
while (head.next != null)
{
p = head.next;
q = head.next.next;
p.next = head;
System.out.println(head.val);
head.next = q;
System.out.println(q.val);
head = q;
if (i == 0)
{
res = p;
i++;
}
}
return res;
}
}