
链表
文章平均质量分 50
在河之洲木水
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode刷题系列 -- 27. 移除元素
你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。你不需要考虑数组中超出新长度后面的元素。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中。// 在函数里修改输入数组对于调用者是可见的。为什么返回数值是整数,但输出的答案是数组呢?的元素,并返回移除后数组的新长度。原创 2023-01-29 16:18:09 · 215 阅读 · 0 评论 -
LeetCode刷题系列 -- 26. 删除有序数组中的重复项
定义两个下标,p 与 q ,移动下标 q。= nums[ q ] ,则将nums[ q ] 复制到 nums[ p + ] ,若是 nums[ p ] == nums[ q ],则移动 q 直到 nums[ p ]!= nums[ q ] 或者遍历完数组。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。// 长度正确的期望答案。不需要考虑数组中超出新长度后面的元素。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。原创 2023-01-29 16:04:44 · 402 阅读 · 0 评论 -
LeetCode刷题系列 -- 25. K 个一组翻转链表
是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。链表中的节点数目为 n。原创 2023-01-29 14:27:23 · 332 阅读 · 0 评论 -
LeetCode 刷题系列 -- 143. 重排链表
定义list的最左边的下标 left = 0,最右边的下标 right = list.size - 1 ,将 left 与right的链表节点重新排序,1. left 与 right 相等, 说明:链表为奇数个节点, 注意:奇数个节点时,需要手动将中间的节点加入到重排序的链表中,再将最后一个节点的 next指向 空指针。2. left > right 时,说明:链表为偶数个节点,此时直接将最后一个节点指向 空指针 list[ left ]-> next = nullptr 即可。原创 2023-01-28 22:36:32 · 690 阅读 · 0 评论 -
LeetCode刷题系列 -- 24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。链接:https://leetcode.cn/problems/swap-nodes-in-pairs。输入:head = [1,2,3,4]来源:力扣(LeetCode)输入:head = [1]输出:[2,1,4,3]输入:head = []原创 2022-11-04 23:05:07 · 241 阅读 · 0 评论 -
LeetCode刷题系列 -- 25. K 个一组翻转链表
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。链接:https://leetcode.cn/problems/reverse-nodes-in-k-group。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。输入:head = [1,2,3,4,5], k = 2。输入:head = [1,2,3,4,5], k = 3。输出:[2,1,4,3,5]输出:[3,2,1,4,5]原创 2022-11-04 22:56:49 · 162 阅读 · 0 评论 -
LeetCode刷题系列 -- 92. 反转链表 II
2. 递归调用 reverseBetween(ListNode* head, int left, int right) 函数,递归终止条件为 left == 1 ,此时题目退化为 求解某个链表的前 right - left + 1 个节点的翻转。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。输入:head = [1,2,3,4,5], left = 2, right = 4。输入:head = [5], left = 1, right = 1。输出:[1,4,3,2,5]原创 2022-11-04 01:10:36 · 328 阅读 · 0 评论 -
LeetCode 刷题系列 -- 206. 反转链表
链接:https://leetcode.cn/problems/reverse-linked-list。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输入:head = [1,2]来源:力扣(LeetCode)输出:[5,4,3,2,1]输入:head = []原创 2022-11-04 00:01:42 · 181 阅读 · 0 评论 -
LeetCode 刷题系列 -- 2. 两数相加
1. 当 l1 == nullptr and l2 == nullptr 时,若是 carry 大于 0 ,则将 carry放入 node 里面,返回该 node。2. 当 l1 == nullptr 时,则值遍历 l2 即可,记得将 进位 carry 传入下一位的计算。3. 当 l2 == nullptr 时,则值遍历 l1 即可,记得将 进位 carry 传入下一位的计算。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。原创 2022-11-03 00:18:01 · 423 阅读 · 0 评论 -
LeetCode刷题系列 -- 109. 有序链表转换二叉搜索树
链接:https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/solution/you-xu-lian-biao-zhuan-huan-er-cha-sou-suo-shu-1-3/此时,小于中位数的元素组成了左子树,大于中位数的元素组成了右子树,它们分别对应着有序链表中连续的一段。解释: 一个可能的答案是[0,-3,9,-10,null,5],它表示所示的高度平衡的二叉搜索树。来源:力扣(LeetCode)原创 2022-10-30 23:52:56 · 199 阅读 · 0 评论 -
LeetCode 刷题系列 -- 86. 分隔链表
定义两个指针 small 与 big ,遍历链表 若是当前节点 小于 x 时,将节点放到 small 链表结尾;若是当前节点大于等于 x 时,将节点放到 big 链表的结尾;给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。输入:head = [1,4,3,2,5,2], x = 3。输入:head = [2,1], x = 2。链表中节点的数目在范围 [0, 200] 内。输出:[1,2,2,4,3,5]原创 2022-10-30 19:02:36 · 254 阅读 · 0 评论 -
LeetCode 刷题系列 -- 19. 删除链表的倒数第 N 个结点
1. 定义一个 dumpy 节点,dumpy->next = head (当要删除的节点是头节点时,返回 dumpy->next 即可)链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。输出:[1,2,3,5]原创 2022-10-30 18:16:39 · 169 阅读 · 0 评论 -
LeetCode 刷题系列 -- 142. 环形链表 II
为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。另外假设从起点到达 环形链表的起点的距离为 x , 从环形链表的起点到两个指针相遇的的节点的距离为 y ,从 两个指针相遇的的节点的距离到环形链表的起点。我们不难得出,当我们定义两个节点,分别从相遇节点 和 链表的起始节点出发时,两者相遇的地方就是环形链表的起点。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。解释:链表中有一个环,其尾部连接到第二个节点。原创 2022-10-30 17:03:32 · 442 阅读 · 0 评论 -
LeetCode 刷题系列 -- 384. 打乱数组
/ 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。例如,返回 [3, 1, 2]// 随机返回数组 [1, 2, 3] 打乱后的结果。例如,返回 [1, 3, 2]// 重设数组到它的初始状态 [1, 2, 3]。返回 [1, 2, 3]链接:https://leetcode.cn/problems/shuffle-an-array。int[] reset() 重设数组到它的初始状态并返回。int[] shuffle() 返回数组随机打乱后的结果。原创 2022-10-07 22:27:15 · 231 阅读 · 0 评论 -
LeetCode刷题系列 -- 382. 链表随机节点
链接:https://leetcode.cn/problems/linked-list-random-node。int getRandom() 从链表中随机选择一个节点并返回该节点的值。// getRandom() 方法应随机返回 1、2、3中的一个,每个元素被返回的概率相等。题目中说的是 每个节点 被选中的概率一样,即每个节点被选中的概率为 1/n。给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。个元素时,应该有 1/i 的概率选择该元素,1 - 1/i的概率保持原有的选择。原创 2022-10-07 21:44:04 · 175 阅读 · 0 评论 -
LeetCode刷题系列 -- 141. 环形链表
题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?来源:力扣(LeetCode)链.原创 2020-10-09 23:19:51 · 133 阅读 · 0 评论 -
LeetCode刷题系列 -- 138. 复制带随机指针的链表
题目:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。我们用一个由n个节点组成的链表来表示输入/输出中的链表。每个节点用一个[val, random_index]表示:val:一个表示Node.val的整数。random_index:随机指针指向的节点索引(范围从0到n-1);如果不指向任何节点,则为null。示例 1:输入:head = [[7,null],[13,0],[11,4...原创 2020-10-06 16:45:40 · 174 阅读 · 0 评论 -
LeetCode刷题系列 -- 61. 旋转链表
题目: 给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0->1-&...原创 2020-10-06 16:03:54 · 150 阅读 · 0 评论 -
LeetCode刷题系列 -- 25. K 个一组翻转链表
题目:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。...原创 2020-09-29 23:14:34 · 138 阅读 · 0 评论 -
LeetCode刷题系列 -- 面试题 02.01. 移除重复节点
题目:编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci思路:定义两个临时节点...原创 2020-06-26 11:28:21 · 211 阅读 · 0 评论 -
LeetCode刷题系列 -- 19. 删除链表的倒数第N个节点
题目:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list思路: 定义两个节点 tmp1 与 tmp2 均指向头结点,tm...原创 2020-06-25 13:30:16 · 131 阅读 · 0 评论 -
LeetCode刷题系列:2. 两数相加
题目:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers示例:输入:(2 -> 4 -> 3) + (5 -> 6 ->...原创 2020-06-17 22:59:02 · 215 阅读 · 0 评论 -
数据结构与算法系列 -- 查找链表的中间节点
题目: 查找链表的中间节点比如:有链表1->3->5->8->9->10->12->11->17 ,其中间节点为9思路:定义两个指针,分别为slow与fast,同时从头节点开始往尾节点移动,slow每次移动一个节点,fast每次移动两个节点,直到fast到了尾节点后,停止移动,此时slow指向的节点就是中间节点。public class LinkedList { public void print(LinkedNode<I...原创 2020-05-10 13:53:35 · 289 阅读 · 0 评论