
链表系列
文章平均质量分 67
链表系列面试题目
硕风和炜
硕风和炜,优快云官方Java领域优质创作者,阿里云社区专家博主,华为云云享专家,第十二届蓝桥杯JavaB组省1,保研,国家奖学金,JAVA开发技术栈,面试刷题,面经八股文,经验分享,好用的网站工具分享
展开
-
【LeetCode: 445. 两数相加 II + 链表】
【LeetCode: 445. 两数相加 II + 链表】给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。原创 2025-02-03 21:40:03 · 876 阅读 · 0 评论 -
【LeetCode: 83. 删除排序链表中的重复元素 + 链表】
【LeetCode: 83. 删除排序链表中的重复元素 + 链表】给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。原创 2024-12-29 17:14:35 · 1015 阅读 · 0 评论 -
【LeetCode: 237. 删除链表中的节点 + 脑筋急转弯 + 链表】
【LeetCode: 237. 删除链表中的节点 + 脑筋急转弯 + 链表】有一个单链表的 head,我们想删除它其中的一个节点 node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。删除给定的节点。注意,删除节点并不是指从内存中删除它。这里的意思是:原创 2024-12-25 15:39:32 · 1022 阅读 · 0 评论 -
【LeetCode: 142. 环形链表 II + 链表】
【LeetCode: 142. 环形链表 II + 链表】给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。原创 2024-12-23 11:07:22 · 797 阅读 · 0 评论 -
【LeetCode: 141. 环形链表 + 链表】
【LeetCode: 141. 环形链表 + 链表】给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。原创 2024-12-22 15:26:47 · 803 阅读 · 0 评论 -
【LeetCode: 876. 链表的中间结点 + 链表】
【LeetCode: 876. 链表的中间结点 + 链表】给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。原创 2024-12-22 15:20:43 · 514 阅读 · 0 评论 -
【LeetCode: 24. 两两交换链表中的节点 + 链表】
【LeetCode: 24. 两两交换链表中的节点 + 链表】给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-12-22 11:47:54 · 1132 阅读 · 0 评论 -
【LeetCode: 92. 反转链表 II + 链表】
【LeetCode: 92. 反转链表 II + 链表】给你单链表的头指针 head 和两个整数 left 和 right ,其中 left原创 2024-12-20 15:32:59 · 689 阅读 · 0 评论 -
【LeetCode: 160. 相交链表 + 链表】
【LeetCode: 160. 相交链表 + 链表】给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。原创 2024-12-09 16:27:43 · 999 阅读 · 0 评论 -
【LeetCode: 234. 回文链表 + 链表】
【LeetCode: 234. 回文链表 + 链表】给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。原创 2024-12-08 16:29:19 · 623 阅读 · 0 评论 -
【LeetCode: 203. 移除链表元素 + 链表】
【LeetCode: 203. 移除链表元素 + 链表】给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。原创 2024-12-07 14:03:31 · 769 阅读 · 0 评论 -
【LeetCode: 19. 删除链表的倒数第 N 个结点 | 链表 + 快慢指针】
【LeetCode: 19. 删除链表的倒数第 N 个结点 | 链表 + 快慢指针】给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。原创 2024-10-05 12:09:15 · 809 阅读 · 0 评论 -
【Leetcode:2. 两数相加 + 链表】
【Leetcode:2. 两数相加 + 链表】给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。原创 2024-08-30 22:12:40 · 940 阅读 · 0 评论 -
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。原创 2024-08-16 10:20:33 · 1325 阅读 · 0 评论 -
【LeetCode:23. 合并 K 个升序链表 + 链表 + 归并 + 递归】
【LeetCode:23. 合并 K 个升序链表 + 链表 + 归并 + 递归】给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。原创 2024-05-15 10:44:06 · 660 阅读 · 0 评论 -
【LeetCode:1721. 交换链表中的节点 + 链表】
【LeetCode:1721. 交换链表中的节点 + 链表】给你链表的头节点 head 和一个整数 k 。交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。原创 2024-05-13 21:36:00 · 977 阅读 · 0 评论 -
【LeetCode:LCR 077. 排序链表 + 链表】
【LeetCode:LCR 077. 排序链表 + 链表】给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。原创 2024-05-09 15:32:38 · 430 阅读 · 0 评论 -
【LeetCode:143. 重排链表 + 链表】
【LeetCode:143. 重排链表 + 链表】给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。原创 2024-05-08 17:01:08 · 599 阅读 · 0 评论 -
【LeetCode:147. 对链表进行插入排序 + 链表】
【LeetCode:147. 对链表进行插入排序 + 链表】给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。原创 2024-05-07 16:44:34 · 636 阅读 · 0 评论 -
【LeetCode:2095. 删除链表的中间节点 + 链表】
【LeetCode:2095. 删除链表的中间节点 + 链表】给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。对于 n = 1、2、3、4 和 5 的情况,中间节点的下标分别是 0、1、1、2 和 2 。原创 2024-04-26 14:00:34 · 1006 阅读 · 1 评论 -
【LeetCode: 21. 合并两个有序链表 + 链表】
【LeetCode: 21. 合并两个有序链表 + 链表】将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2024-04-06 15:19:43 · 696 阅读 · 0 评论 -
【LeetCode: 82. 删除排序链表中的重复元素 II + 链表】
【LeetCode: 82. 删除排序链表中的重复元素 II + 链表】给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。原创 2024-02-03 18:00:39 · 514 阅读 · 0 评论 -
【LeetCode: 25. K 个一组翻转链表 + 链表 + 递归】
【LeetCode: 25. K 个一组翻转链表 + 链表 + 递归】给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。原创 2024-01-30 20:16:16 · 1035 阅读 · 0 评论 -
【LeetCode: 138. 随机链表的复制 + 链表 + Hash表】
【LeetCode: 138. 随机链表的复制 + 链表 + Hash表】给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有原创 2024-01-29 13:29:01 · 1073 阅读 · 0 评论 -
【LeetCode: 148. 排序链表 + 链表 + 归并排序】
【LeetCode: 148. 排序链表 + 链表 + 归并排序】给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。原创 2024-01-25 20:21:37 · 996 阅读 · 0 评论 -
【LeetCode:2807. 在链表中插入最大公约数 | 链表】
【LeetCode:2807. 在链表中插入最大公约数 | 链表】给你一个链表的头 head ,每个结点包含一个整数值。在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。请你返回插入之后的链表。两个数的 最大公约数 是可以被两个数字整除的最大正整数。原创 2024-01-06 22:47:01 · 561 阅读 · 0 评论 -
【LeetCode:61. 旋转链表 | 链表】
【LeetCode:61. 旋转链表 | 链表】给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。原创 2023-12-26 12:36:16 · 1018 阅读 · 0 评论 -
【合并k个已排序的链表~~~链表+分治+递归+合并】
【合并k个已排序的链表~~~链表+分治+递归+合并】合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。要求:时间复杂度 O(nlogn)数据范围:节点总数 0≤n≤5000,每个节点的val满足∣val∣原创 2023-01-06 18:25:25 · 261 阅读 · 0 评论 -
【链表内指定区间反转】
面试必考的链表题目,指定区间内反转链表;将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。数据范围: 链表长度 0原创 2022-10-06 15:30:17 · 564 阅读 · 0 评论 -
【链表相加~~~反转链表】
【链表相加~~~反转链表】例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。数据范围:0≤n,m≤1000000,链表任意值0≤val≤9。给定两个这种链表,请生成代表两个整数相加值的结果链表。要求:空间复杂度 O(n),时间复杂度 O(n)原创 2023-01-06 18:21:06 · 130 阅读 · 0 评论 -
【两个链表的第一个公共结点~~~链表+双指针】
【两个链表的第一个公共结点~~~链表+双指针】输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到函数FindFirstCommonNode里面,用户得到的输入只有pHead1和pHead2。输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)原创 2023-01-05 12:49:02 · 112 阅读 · 0 评论 -
【单链表的排序~~~链表+递归+分治】
【单链表的排序~~~链表+递归+分治】给定一个节点数为n的无序单链表,对其按升序排序。原创 2023-01-06 18:01:37 · 121 阅读 · 0 评论 -
【合并两个排序的链表】
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。1. 如果有一个链表为空,返回另一个链表2. 如果pHead1 节点值比小pHead2,下一个节点应该是 pHead1,应该return pHead1,在return之前,指定pHead1的下一个节点应该是pHead1.next和pHead2俩链表的合并后的头结点3. 如果pHead1 节点值比pHead2大,下一个节点应该是pHead2,应该return pHead2,在return之前,指定pHead2的下一个原创 2023-01-03 17:07:04 · 276 阅读 · 0 评论 -
【链表中环的入口结点】
【链表中环的入口结点】输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据第二段是否为空将这两段组装成一个无环或者有环单链表。返回链表的环的入口结点即可,我们后台程序会打印这个结点对应的结点值;若没有,则返回对应编程语言的空结点即可。给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。原创 2023-01-04 12:02:53 · 128 阅读 · 0 评论 -
【链表中的节点每k个一组翻转】
【链表中的节点每k个一组翻转】如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样。将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。对于 k = 2 , 你应该返回 2→1→4→3→5。对于 k = 3 , 你应该返回3→2→1→4→5。你不能更改节点中的值,只能更改节点本身。输入数据:{1,2,3,4,5},2。给定的链表是 1→2→3→4→5。返回结果{2,1,4,3,5}原创 2023-01-03 11:09:04 · 168 阅读 · 0 评论 -
【链表中倒数最后k个节点~~~链表+双指针+快慢指针】
【链表中倒数最后k个节点~~~链表+双指针+快慢指针】其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有的节点来比较。输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。原创 2023-01-04 18:50:29 · 109 阅读 · 0 评论 -
【判断链表中是否有环】
【判断链表中是否有环】输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据第二段是否为空将这两段组装成一个无环或者有环单链表。返回链表的环的入口结点即可,我们后台程序会打印这个结点对应的结点值;若没有,则返回对应编程语言的空结点即可。判断给定的链表中是否有环。如果有环则返回true,否则返回false。原创 2023-01-04 11:51:00 · 211 阅读 · 0 评论 -
【链表的奇偶重排~~~链表+双指针】
【链表的奇偶重排~~~链表+双指针】给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。数据范围:节点数量满足 0≤n≤10^5 ,节点中的值都满足 0≤val≤1000。奇数位节点有1,6,7,偶数位节点有4,3。重排后为1,6,7,4,3。要求:空间复杂度 O(n),时间复杂度O(n)注意是节点的编号而非节点的数值。原创 2023-01-06 10:22:14 · 136 阅读 · 0 评论 -
【删除有序链表中重复的元素~~~链表中的所有元素都只出现一次】
【删除有序链表中重复的元素~~~链表中的所有元素都只出现一次】删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次。数据范围:链表长度满足0≤n≤100,链表中任意节点的值满足∣val∣≤100。给出的链表为1→1→2→3→3,返回1→2→3.着重需要注意的一点是:重复的数字只会出现一次。进阶:空间复杂度O(1),时间复杂度O(n)给出的链表为1→1→2,返回1→2.原创 2023-01-06 10:29:51 · 205 阅读 · 0 评论 -
【反转链表】
【代码】【反转链表】原创 2022-10-02 22:20:28 · 167 阅读 · 0 评论