LeetCode 24. 【Java】24. Swap Nodes in Pairs
原题链接
中等
作者:
tt2767
,
2020-02-01 23:37:44
,
所有人可见
,
阅读 693
/*
1. 指针每次交换相邻节点并且前进2次, 更改顺序最好是按照结果顺序
2. 设置虚拟前置节点防头结点修改
3. 设置虚拟节点后,虚拟节点也要参与运算更新
4. testcase: 长度为 0, 1, 2, 3,4 ,5的链表
*/
/**
* 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 prev = new ListNode(0);
prev.next = head;
var p1 = prev;
var p2 = head;
// 所有被赋值的变量都不应该是null
while (p1 != null && p2 != null && p2.next != null){
p1.next = p2.next;
p2.next = p2.next.next;
p1.next.next = p2;
p1 = p2;
p2 = p2.next;
}
return prev.next;
}
}