最初思路就是把值交换,应该比较好做,但是题目示意采用更改结点连接的方式做,定义一个虚拟结点当头节点,然后把后面两个节点的连接顺序交换即可。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode a = new ListNode(0);
a.next = head;
ListNode b = a;
while(b.next != null && b.next.next!=null){
ListNode left = b.next;
ListNode right = b.next.next;
left.next = right.next;
b.next = right;
right.next = left;
b = b.next.next;
}
return a.next;
}
}