一、今日学习的文章链接和视频链接
帮你把链表细节学清楚! | LeetCode:24. 两两交换链表中的节点 (opens new window)
链表遍历学清楚! | LeetCode:19.删除链表倒数第N个节点 (opens new window)
把环形链表讲清楚!| LeetCode:142.环形链表II (opens new window)
二、学习内容
两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
-
初始化:
创建一个虚拟头节点
dummyNode,它的next指向链表的头节点head。虚拟头节点的目的是处理链表头节点的交换时可能出现的边界问题。 -
遍历链表:
使用一个指针
cur来指向当前正在处理的节点。
当cur.next和cur.next.next不为空时,表示至少还有两个节点可以交换。 -
交换节点:
保存第一个节点
temp1(即cur.next)。
保存第三个节点temp2(即cur.next.next.next)以便后续操作。
更新cur.next指向第二个节点(即cur.next.next),完成第一步的交换。将原来的第一个节点的next指向第三个节点temp2,确保链表结构的完整性。
更新cur为当前处理的最后一个节点,即更新为原来的第二个节点(cur.next.next),为下一轮的交换做准备。 -
返回结果:
最后返回
dummyNode.next,即新的链表头节点。 -
public class PairwiseExchange { public static void main(String[] args) { int[] arr1 = {1,2,3,4}; ListNode head1 = createLinkedList(arr1); System.out.p


最低0.47元/天 解锁文章
1127

被折叠的 条评论
为什么被折叠?



