题目链接
https://leetcode.cn/problems/swap-nodes-in-pairs/
题解
题其实不难,难得是细节的把控,如果能把图画出来,就会简单很多了
唯一需要注意的就是赋值的先后顺序,不要让链断掉
class Solution {
public ListNode swapPairs(ListNode head) {
// 空链表或者1个节点不需要交换
if (head == null || head.next == null)
return head;
// 创建一个新头连到原来的链表上
ListNode newHead = new ListNode(-1, head);
// 临时节点用于迭代
ListNode node = newHead;
// 临时节点的下一个节点
ListNode node1 = null;
// 临时节点下一个节点的下一个节点
ListNode node2 = null;
while (node.next != null && node.next.next != null) {
// 保存node1
node1 = node.next;
// 保存node2
node2 = node.next.next;
// 当前节点指向node2
node.next = node2;
// node.next指向node2.next
node1.next = node2.next;
// node2.next指向node1
node2.next = node1;
// 当前节点成为node1节点(迭代)
node = node1;
}
return newHead.next;
}
}