一、题目
二、代码
/**
* 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) return null;
ListNode MyHead = new ListNode(0);
ListNode ProcessNode = new ListNode(0);
MyHead.next = head;
ProcessNode = MyHead;
while(ProcessNode.next!=null&&ProcessNode.next.next!=null)
{
ListNode node1 = ProcessNode;
ListNode node2 = ProcessNode.next;
ListNode node3 = ProcessNode.next.next;
//三条线是核心 213
node2.next =node3.next;
node1.next = node3;
node3.next = node2;
ProcessNode = node2;
}
return MyHead.next;
}
}
三、运行结果
四、附录
二刷 --三个节点的操作
/**
* 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 temp1 = head;
ListNode temp2 = head.next;
ListNode temp3;
ListNode return_node = head.next;
while(temp1!=null)
{
// System.out.println(" temp1 "+temp1.val);
temp2 = temp1.next;
if(temp2==null) break;
// System.out.println(" temp2 "+temp2.val);
temp3 = temp2.next;
temp2.next = temp1;
if(temp3!=null)
{
if(temp3.next!=null) temp1.next = temp3.next;
else
{
temp1.next = temp3;
break;
}
}
else
{
temp1.next = null;
break;
}
temp1 = temp3;
}
// while(return_node!=null)
// {
// System.out.println(" return_node "+return_node.val);
// return_node = return_node.next;
// }
return return_node;
}
}