avatar
文章
101
标签
56
分类
22
首页
归档
标签
分类
关于
很多时候不懂事
搜索
首页
归档
标签
分类
关于

很多时候不懂事

LeetCode29 - 删除链表的倒数第 N 个节点
发表于2026-03-18|算法题练习链表|中等•双指针•链表
📝 题目描述 题目链接:删除链表的倒数第 N 个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例: 示例 1: 12输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5] 示例 2: 12输入:head = [1], n = 1输出:[] 示例 3: 12输入:head = [1,2], n = 1输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz 💡 解题思路 方法一:计算长度 一种容易想到的方法是,我们首先从头节点开始对链表进行一次遍历,得到链表的长度 LLL。随后我们再从头节点开始对链表进行一次遍历,当遍历到第 L−nL−nL−n 个节点时,它就是我们需要删除的节点。 为了方便实操,我们在头节点前再添加一个哨兵节点,这样得到 LLL 后,我们从哨兵节点开始对链表进行一次遍历,当遍历到第 L−nL−nL−n 个节点时,它就是我们需要删除的节点的前一个节点。 方法二:栈 我们也可以在遍历...
LeetCode28 - 两数相加
发表于2026-03-18|算法题练习链表|中等•数学•递归•链表•初级工程师
📝 题目描述 题目链接:两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 示例 1: 123输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807. 示例 2: 12输入:l1 = [0], l2 = [0]输出:[0] 示例 3: 12输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1] 提示: 每个链表中的节点数在范围 [1, 100] 内 0 <= Node.val <= 9 题目数据保证列表表示的数字不含前导零 💡 解题思路 方法一:模拟 由于输入的两个链表都是 逆序 存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。 我们同时遍历两个链表,逐位计算它们的和,并与当前位置的进位值相加。具体而言,如果当前两个链表处相应...
LeetCode27 - 合并两个有序链表
发表于2026-03-18|算法题练习链表|简单•递归•链表
📝 题目描述 题目链接:合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 示例 1: 12输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4] 示例 2: 12输入:l1 = [], l2 = []输出:[] 示例 3: 12输入:l1 = [], l2 = [0]输出:[0] 提示: 两个链表的节点数目范围是 [0, 50] -100 <= Node.val <= 100 l1 和 l2 均按 非递减顺序 排列 💡 解题思路 方法一:递归 我们可以如下递归地定义两个链表里的 merge 操作(忽略边界情况,比如空链表等): {list1[0]+merge(list1[1:],list2)list1[0]<list2[0]list2[0]+merge(list1,list2[1:])​otherwise\begin{cases} list1[0]+merge(list1[1:],list2) & list1[0]<lis...
LeetCode26 - 环形链表 II
发表于2026-03-18|算法题练习链表|中等•哈希表•双指针•链表
📝 题目描述 题目链接:环形链表 II 给定一个链表的头节点 head,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 示例: 示例 1: 123输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 123输入:head = [1,2], pos = 0输出:返回索引为 0 的链表节点解释:链表中有一个环,其尾部连接到第一个节点。 示例 3: 123输入:head = [1], pos = -1输出:返回 null解释:链表中没有环。 提示: 链表中节点的数目范围在范围 [0, 10^4] 内 -10^5 <= Node.val <=...
LeetCode25 - 环形链表
发表于2026-03-17|算法题练习链表|哈希表•简单•双指针•链表
📝 题目描述 题目链接:环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。 如果链表中存在环 ,则返回 true 。 否则,返回 false 。 示例: 示例 1: 123输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 123输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。 示例 3: 123输入:head = [1], pos = -1输出:false解释:链表中没有环。 提示: 链表中节点的数目范围是 [0, 10^4] -10^5 <= Node.val <= 10^5 pos 为 -1 或者链表中的一个有效索引 💡 解题思路 方法一:哈希表...
LeetCode24 - 回文链表
发表于2026-03-17|算法题练习链表|简单•双指针•栈•递归•链表
📝 题目描述 题目链接:回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 回文序列:回文序列是向前和向后读都相同的序列。 示例: 示例 1: 12输入:head = [1,2,2,1]输出:true 示例 2: 12输入:head = [1,2]输出:false 提示: 链表中节点数目在范围[1, 10^5] 内 0 <= Node.val <= 9 💡 解题思路 方法一:复制到数组 这个思路很直观也很简单,就是复制一份数字到数组中去,再利用双指针进行回文判断。 方法二:递归 实际上就是借助栈的性质实现逆序比较。 这种方法需要在递归函数外部预留一个ListNode*的变量,每当返回一层递归,全局变量就要往后移动一个节点,以便进行对比。 方法三:快慢指针 我们可以将链表的后半部分反转(修改链表结构),然后将前半部分和后半部分进行比较。比较完成后我们应该将链表恢复原样。虽然不需要恢复也能通过测试用例,但是使用该函数的人通常不希望链表结构被更改。 该方法虽然可以将空间复杂度降到 ...
LeetCode23 - 反转链表
发表于2026-03-17|算法题练习链表|简单•递归•链表
📝 题目描述 题目链接:反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例: 示例 1: 12输入:head = [1,2,3,4,5]输出:[5,4,3,2,1] 示例 2: 12输入:head = [1,2]输出:[2,1] 示例 3: 12输入:head = []输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 💡 解题思路 方法一:递归 比较容易想到的解法,本质上就是利用函数调用栈状态来记录每个节点。其关键在于反向工作。假设链表的其余部分已经被反转,现在应该如何反转它前面的部分? 假设链表为: n1​→…→nk−1​→nk​→nk+1​→…→nm​→∅n_1​→…→n_{k−1}​→n_{k}​→n_{k+1}​→…→n_{m}​→∅ n1​​→…→nk−1​​→nk​​→nk+1​​→…→nm​​→∅ 若从节点 nk+1​n_{k+1}​nk+1​​ 到 nmn_{m}nm​​ 已经被反转,而我们正处于 nkn_{k}nk​​。 n1​→…→nk−1...
LeetCode22 - 相交链表
发表于2026-03-16|算法题练习链表|哈希表•简单•双指针•链表
📝 题目描述 题目链接:相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 自定义评测: 评测系统 的输入如下(你设计的程序 不适用 此输入): intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0 listA - 第一个链表 listB - 第二个链表 skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数 skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数 评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。 示例: 示例 1: 123456输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4...
LeetCode21 - 搜索二维矩阵 II
发表于2026-03-15|算法题练习矩阵|中等•数组•分治•矩阵•二分查找
📝 题目描述 题目链接:搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 示例 1: 12输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true 示例 2: 12输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20输出:false 提示: m == matrix.length n == matrix[i].length 1 <= n, m <= 300 -10^9 <= matrix[i][j] <= 10^9 每行的所有元素从左到右升序排列 每列的所有元素从上到下升序排列 -10^9 &...
LeetCode20 - 旋转图像
发表于2026-03-15|算法题练习矩阵|中等•数组•矩阵•数学
📝 题目描述 题目链接:旋转图像 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例: 示例 1: 12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]] 示例 2: 12输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]] 提示: n == matrix.length == matrix[i].length 1 <= n <= 20 -1000 <= matrix[i][j] <= 1000 💡 解题思路 方法一:原地旋转 仔细思考,对于一个n×nn \times nn×n矩阵的任意位置[i, j][i,\ j][i, j],推断一下其在旋转后的坐标...
1…678…11
avatar
azuki
记录一些琐碎的事物
文章
101
标签
56
分类
22
GitHub
公告
This is my Blog
最新文章
LeetCode85 - 零钱兑换2026-04-26
LeetCode84 - 完全平方数2026-04-25
LeetCode83 - 打家劫舍2026-04-23
LeetCode82 - 杨辉三角2026-04-20
LeetCode81 - 爬楼梯2026-04-20
分类
  • LLM手撕练习1
  • 华厦实习9
  • 生活记录2
  • 算法题练习86
    • 二分查找6
    • 二叉树15
    • 动态规划5
    • 双指针4
标签
发癫生活华厦大语言模型注意力机制面试实习中等数组哈希表前缀和简单困难队列滑动窗口单调队列堆字符串排序分治动态规划数字双指针矩阵模拟数学二分查找栈递归链表初级工程师堆(优先队列)归并排序树深度优先搜索二叉树设计双向链表广度优先搜索二叉搜索树
归档
  • 四月 2026 37
  • 三月 2026 40
  • 二月 2026 6
  • 一月 2026 4
  • 十二月 2025 2
  • 七月 2024 11
  • 六月 2024 1
网站信息
文章数目 :
101
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2024 - 2026 By azuki框架 Hexo 8.1.1|主题 Butterfly 5.5.3
搜索
数据加载中