
解题思路:这题就是正常模拟,我用三个指针,left,mid,right,从dummy_head开始,一直交换即可。
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if(head==null || head.next==null) return head;ListNode dummy_head = new ListNode(0,head);ListNode left = dummy_head;ListNode mid = head;ListNode right = head.next;while(true){left.next = right;mid.next = right.next;right.next = mid;if(mid.next==null||mid.next.next==null) break;left = mid;right = mid.next.next;mid = mid.next;}return dummy_head.next;}
}