
链表
文章平均质量分 58
链表
可惜我是水瓶座__
这个作者很懒,什么都没留下…
展开
-
【LeetCode】708. 循环有序列表的插入
解释:在上图中,有一个包含三个元素的循环有序列表,你获得值为 3 的节点的指针,我们需要向表中插入元素 2。新插入的节点应该在 1 和 3 之间,插入之后,整个列表如上图所示,最后返回节点 3。给定循环单调非递减列表中的一个点,写一个函数向这个列表中插入一个新元素 insertVal ,使这个列表仍然是循环非降序的。如果有多个满足条件的插入位置,你可以选择任意一个位置插入新的值,插入后整个列表仍然保持有序。给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列表中最小元素的指针。原创 2024-10-13 22:34:22 · 576 阅读 · 0 评论 -
【LeetCode】分隔链表
给你一个链表的头节点 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]原创 2024-07-20 22:34:59 · 470 阅读 · 0 评论 -
【LeetCode】旋转链表
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。输入:head = [1,2,3,4,5], k = 2。输入:head = [0,1,2], k = 4。链表中节点的数目在范围 [0, 500] 内。个节点,然后做断开重新连接的动作。输出:[4,5,1,2,3]输出:[2,0,1]原创 2024-07-20 22:29:34 · 429 阅读 · 0 评论 -
【LeetCode】删除排序链表中的重复元素 II
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字。返回 已排序的链表。输入:head = [1,2,3,3,4,4,5]先遍历一边链表,利用哈希表记录每个数字出现了多少次。输入:head = [1,1,1,2,3]链表中节点数目在范围 [0, 300] 内。然后再遍历一边,跳过哪些所有出现次数超过。题目数据保证链表已经按升序 排列。输出:[1,2,5]原创 2024-07-17 22:15:37 · 315 阅读 · 0 评论 -
【LeetCode】K 个一组翻转链表
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。进阶:你可以设计一个只用 O(1) 额外内存空间的算法解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。输入: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]原创 2024-07-17 21:41:03 · 349 阅读 · 0 评论 -
【LeetCode】随机链表的复制
新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]输入:head = [[3,null],[3,0],[3,null]]原创 2024-07-16 22:24:24 · 306 阅读 · 0 评论 -
【LeetCode】合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]一般这种链表题,为了解法统一,都会创建一个。输入:l1 = [], l2 = [0]两个链表的节点数目范围是 [0, 50]输入:l1 = [], l2 = []l1 和 l2 均按 非递减顺序 排列。输出:[1,1,2,3,4,4]原创 2024-07-16 22:10:04 · 304 阅读 · 0 评论 -
【LeetCode】LRU缓存
用双向链表,为什么是双向的呢,因为lru更新的时候,我们要把它插入到最新的位置,所以在只知道一个位置的时候,双向链表插入的时候,可以做到。int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1。// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)// 返回 -1 (未找到)lRUCache.put(1, 1);原创 2024-06-26 18:56:29 · 609 阅读 · 0 评论 -
【LeetCode】删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。进阶:你能尝试使用一趟扫描实现吗?输出:[1,2,3,5]链表中结点的数目为 sz。原创 2024-06-13 15:49:51 · 193 阅读 · 0 评论 -
【LeetCode】两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]每个链表中的节点数在范围 [1, 100] 内。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]题目数据保证列表表示的数字不含前导零。输出:[7,0,8]原创 2024-06-13 15:44:42 · 197 阅读 · 0 评论