438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 题目链接(中等) 题目描述 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 数据范围: 1 <= s.length, p.length <= 3 * 10^4 s 和 p 仅包含小写字母 示例 示例 1: 输入: s = "cbaebabacd", p = "abc" 输出: 2026-10-10 刷题笔记 > Hot100 > 滑动窗口 #滑动窗口 #哈希表 #字符串
437. 路径总和 III 437. 路径总和 III 题目链接(中等) 题目描述 给定一个二叉树的根节点 root,和一个整数 targetSum,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 数据范围: 二叉树的节点个数的范围是 [0, 1000] -10^9 <= Node.val < 2026-10-10 刷题笔记 > Hot100 > 二叉树 #前缀和 #二叉树 #哈希表 #深度优先搜索
动态规划 动态规划 解题五步法 定义状态:dp[i] 表示什么? 写出状态转移方程:dp[i] 和 dp[i-1] 等之间的关系。 初始化:最小的子问题(边界条件)的值。 确定遍历顺序:一般从小到大,背包问题需注意方向。 确定返回值:dp[n]?dp[n-1]?还是 max(dp)? 一、线性 DP 状态沿着一个维度(通常是数组下标)递推。 LC 70. 爬楼梯 70. 爬楼梯(简单) 需要 n 阶 2026-10-09 刷题笔记 > Hot100 > 动态规划 #DP #动态规划
09_动态规划 经典题型 五、区间 DP 状态为 dp[i][j] 表示区间 [i, j] 的最优解。遍历顺序:区间长度从小到大。 LC 516. 最长回文子序列 516. 最长回文子序列(中等) 给定一个字符串,找到其中最长的回文子序列的长度(子序列不要求连续)。 状态:dp[i][j] = s[i..j] 中最长回文子序列的长度 转移: s[i] == s[j]:dp[i][j] = dp[i+1][ 2026-10-09 刷题笔记 > Hot100 > 动态规划 #动态规划 #模板
406. 根据身高重建队列 406. 根据身高重建队列 题目链接(中等) 题目描述 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [h_i, k_i] 表示第 i 个人的身高为 h_i,前面 正好 有 k_i 个身高 大于或等于 h_i 的人。 请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue,其中 2026-10-09 刷题笔记 > Hot100 > 贪心 #排序 #数组 #贪心
399. 除法求值 399. 除法求值 题目链接(中等) 题目描述 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [A_i, B_i] 和 values[i] 共同表示等式 A_i / B_i = values[i]。每个 A_i 或 B_i 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 queries[j] 2026-10-09 刷题笔记 > Hot100 > 图论 #并查集 #图 #字符串 #深度优先搜索 #广度优先搜索 #Floyd
394. 字符串解码 394. 字符串解码 题目链接(中等) 题目描述 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为:k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次 2026-10-09 刷题笔记 > Hot100 > 栈 #递归 #栈 #字符串
347. 前 K 个高频元素 347. 前 K 个高频元素 题目链接(中等) 题目描述 给你一个整数数组 nums 和一个整数 k,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 数据范围: 1 <= nums.length <= 10^5 -10^4 <= nums[i] <= 10^4 k 的取值范围是 [1, 数组中不相同的元素的个数] 题目数据保证答案唯一,换句话说,数组 2026-10-09 刷题笔记 > Hot100 > 堆 #堆 #优先队列 #数组 #哈希表 #快速选择
300. 最长递增子序列 300. 最长递增子序列 题目链接(中等) 题目描述 给你一个整数数组 nums,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 数据范围: 1 <= nums.length <= 2500 -10^4 <= nums[i] < 2026-10-09 刷题笔记 > Hot100 > 动态规划 #二分查找 #动态规划 #数组 #贪心
64. 最小路径和 64. 最小路径和 题目链接(中等) 题目描述 给定一个包含非负整数的 m x n 网格 grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 数据范围: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i][j] <= 200 示例 2026-10-09 刷题笔记 > Hot100 > 动态规划 #动态规划 #数组 #矩阵