题目:24. 两两交换链表中的节点
描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
方法一(改变相邻节点的值)
public ListNode swapPairs(ListNode head) {
ListNode res = head;
if (head == null || head.next == null) {
return head;
}
while (head != null && head.next != null) {
ListNode temp = head.next;
head.val = head.val ^ temp.val;
temp.val = head.val ^ temp.val;
head.val = head.val ^ temp.val;
head = temp.next;
}
return res;
}
方式二(真正交换相邻的两个节点)
public ListNode swapPairs(ListNode head) {
ListNode dummyHead = new ListNode(0);
dummyHead.next = head;
ListNode temp = dummyHead;
while (temp.next != null && temp.next.next != null) {
ListNode node = temp.next;
ListNode node1 = node.next;
node.next = node1.next;
node1.next = node;
temp.next = node1;
temp = node;
}
return dummyHead.next;
}
努力奔跑,是为了追上曾经被寄予厚望的自己。