2020-10-13 打卡题-链表,节点交换
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]示例 2:
输入:head = []
输出:[]示例 3:
输入:head = [1]
输出:[1]提示:
链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
- 题解:
public class SwapPairs {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null) return head;
// 引入多余点辅助交换
ListNode addNode = new ListNode(0);
addNode.next = head;
ListNode temp = addNode;
while(temp.next != null && temp.next.next !=null){
ListNode n1 = temp.next;
ListNode n2 = temp.next.next;
temp.next = n2; // 引入点指向结点2
n1.next = n2.next; // 结点1指向结点2的后续
n2.next = n1; // 结点2指向结点1
temp = n1; // 引入点赋值为节点1,继续后续操作
}
return addNode.next;
}
}