题目地址:https://leetcode.com/problems/swap-nodes-in-pairs/
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
题目要求交换链表相邻两个节点,交换节点,不就是交换值嘛,所以只要给两个游标p,q,遍历链表,速度为2向后移动,即可做交换。
public class SwapNodesInPairs {
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode p = head;
ListNode q = head.next;
while (true){
int t = p.val;
p.val = q.val;
q.val = t;
if (p.next.next != null && q.next.next != null) {
p = p.next.next;
q = q.next.next;
} else {
break;
}
}
return head;
}
public static void main(String[] argv) {
SwapNodesInPairs swapNodesInPairs = new SwapNodesInPairs();
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
node1.next = node2;
node2.next = node3;
node3.next = node4;
swapNodesInPairs.swapPairs(node1);
return;
}
}