Yake1965
ok
展开
-
链表(Linked list)
链表(Linked list)原创 2022-09-01 09:27:52 · 291 阅读 · 0 评论 -
前后缀分解
前后缀分解原创 2023-09-24 18:08:18 · 309 阅读 · 0 评论 -
最短路 Finding Shortest Path
最短路(Finding Shortest Path)原创 2022-12-24 11:14:43 · 1598 阅读 · 0 评论 -
滑动窗口 Sliding Window
滑动窗口分固定窗口和可变窗口,解决 atMostK 问题,大量 leetcode 实践。原创 2022-03-15 10:33:49 · 1911 阅读 · 1 评论 -
字典树 Trie
的每个节点只有两个孩子,那如果每个节点可以有多个孩子呢?这就形成了「多叉树的子节点数目一般不是固定的,所以会用变长数组来保存所有的子节点的指针。」是一种特殊的多叉树,它的 TrieNode 中 chidren 是一个大小为 26 的一维数组(当输入只有小写字符),分别对应了 26 个英文字符 ‘a’ ~ ‘z’,也就是说形成了一棵「26 叉树」。Trie(发音类似 “try”),又称前缀树或字典树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如。原创 2023-11-12 14:36:22 · 277 阅读 · 0 评论 -
146. LRU 缓存
146. LRU 缓存895. 最大频率栈1172. 餐盘栈460. LFU 缓存原创 2024-06-19 09:03:44 · 51 阅读 · 0 评论 -
2024-5-28 刷题题单
使用了虚拟头结点的技巧,也是为了防止出现空指针的情况。例如:链表 head = [1,2,3,4,5],需要删除倒数第 5 个结点,也就是第一个节点。按照算法逻辑,应该首先找到倒数第 6 个节点。但由于头节点不存在前驱节点,因此需要在删除头节点时进行特殊判断。添加一个哑结点,让它的 next 指针指向链表的头节点,头节点的前驱节点就是哑节点本身。原创 2024-05-28 09:25:14 · 271 阅读 · 0 评论 -
二叉树遍历
前、中、后和层序递归与迭代遍历原创 2021-08-01 22:09:21 · 3191 阅读 · 0 评论 -
二叉树遍历 题
前中后层序迭代与递归遍历原创 2021-11-18 08:06:17 · 394 阅读 · 0 评论 -
有限状态自动机
状态机状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。“状态”( State )现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个,例如自动门的状态就是两个 open 和 closed 。状态机,也就是 State Machine ,不是指一台实际机器,而是指一个数学模型。说白了,一般就是指一张状态转换图。例如,根据自动门的运行规则,我们可以抽象出下面这么一个图。自动原创 2021-08-18 22:41:31 · 831 阅读 · 0 评论 -
容斥原理系列
容斥原理:指把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。假设班里有 10 个学生喜欢数学,15 个学生喜欢语文,21 个学生喜欢编程,班里至少喜欢一门学科的有多少个学生呢?最终状态(即 n)的范围非常大。试图自底向上递推或是按照通常的自顶向下回溯显然会超时(比如动态规划、DFS等方法)。第一时间应该想到二分法。原创 2024-04-14 13:14:18 · 72 阅读 · 0 评论 -
思维!!!
【代码】思维!!!原创 2024-04-13 11:42:44 · 57 阅读 · 0 评论 -
2024 春招冲刺百题计划 题单
两数相加题解中等旋转链表题解中等删除排序链表中的重复元素 II题解中等反转链表 II题解中等两两交换链表中的节点题解中等重排链表题解中等相交链表题解简单。原创 2024-04-07 18:03:33 · 76 阅读 · 0 评论 -
经典 topk
【代码】经典 topk。原创 2024-04-03 12:59:29 · 53 阅读 · 0 评论 -
24_02_18
【代码】23_10_22。原创 2023-10-22 18:24:40 · 166 阅读 · 0 评论 -
DP 典型思考与策略
一般来说,题目给了什么就用什么定义;求什么就定义什么。2008.出租车的最大盈利题目给出 1. n 个站点;2. 订单。1、定义 f[i] 表示行驶到 i 时的最大盈利。状态转移,不接终点为 i 的乘客,接所有终点为 i 的乘客中收益最大的,二者取最大值。为了快速找到 终点为 i 的乘客,需要构建邻接表。2、定义 f[i] 表示前 i 个的最大盈利。状态转移,不接第 i 个乘客,接第 i 个乘客,二者取最大值。为了快速找到接第 i 个乘客前的乘客,需要对终点站排序。原创 2022-01-17 10:17:13 · 606 阅读 · 0 评论 -
一、DP 入门
递归定义:在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。例如: 你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。深度优先搜索的定义: 深度优先搜索属于图算法的一种,英文缩写为 DFS。原创 2023-06-29 08:15:53 · 236 阅读 · 0 评论 -
二、网格图 DP
二维 DP原创 2023-07-16 11:08:07 · 211 阅读 · 0 评论 -
三、背包问题
背包问题是经典的「动态规划」,本质上属于组合优化的「 NP完全问题」,「无法直接求解」的问题,只能通过「穷举」+「验证」 的方式进行求解。原创 2022-07-17 12:53:34 · 1433 阅读 · 0 评论 -
六、划分型 DP
416.分割等和子集剑指OfferII101.分割等和子集473.火柴拼正方形698.划分为k个相等的子集1723.完成所有工作的最短时间2305.公平分发饼干1655.分配重复整数410.分割数组的最大值915.分割数组659.分割数组为连续子序列805.数组的均值分割2025.分割数组的最多方案数2270.分割数组的方案数.....................原创 2022-07-20 09:10:55 · 1693 阅读 · 0 评论 -
七、其它线性 DP
七、其它线性 DP§7.1 一维发生在前缀/后缀之间的转移,例如从 f[i−1] 转移到 f[i],或者从 f[j] 转移到 f[i]。原创 2024-04-01 18:55:44 · 49 阅读 · 0 评论 -
八、区间 DP
375. 猜数字大小 II二分法只是一种可能,求最小值需要枚举猜的数来最终确定答案。方法一:递归猜的数字是 k,而答案不是 k 的话,问题变为求解 (1, k - 1) 和 (k + 1, n) 的子问题需要的代价的最大值。class Solution: def getMoneyAmount(self, n: int) -> int: @lru_cache(None) def dfs(x, y): return m原创 2021-11-12 08:25:24 · 554 阅读 · 0 评论 -
九、状态压缩 DP
维护一个集合的状态,常常用 int 或 bool 类型的数组进行表达与描述。如果这个集合包含的元素个数很少,就把描述集合状态的数组压缩到一个整数中,这种 用一个整数来描述一个集合的方法就叫作“状态压缩”。而当状态的某个维度存储的是一个集合的状态,这类问题就称作:状态压缩动态规划。原创 2023-03-27 20:18:53 · 501 阅读 · 0 评论 -
十、数位 DP
数位 DP原创 2022-10-12 08:26:20 · 491 阅读 · 0 评论 -
十一、数据结构优化 DP
单调栈上二分, Java 官方推荐使用 Deque 来模拟栈,Deque 没法直接通过下标检索(来实现手写二分),引入 TreeMap 辅助。floorEntry 方法找到第一个小于或等于指定 key 的 Map.Entry。ceilingEntry 方法找到第一个大于或等于指定key的 Map.Entry。java 数组模拟单调栈。原创 2024-01-10 20:33:50 · 273 阅读 · 0 评论 -
十二、树形 DP
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。两节点之间路径的 长度 由它们之间表示。原创 2024-02-24 13:15:53 · 81 阅读 · 0 评论 -
旅行商问题 TSP
旅行推销员问题(Travelling salesman problem, TSP):给定一组城市和每对城市之间的距离,问题是找到最短的可能路线,访问每个城市一次,然后返回起点。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。原创 2023-04-10 08:50:20 · 3599 阅读 · 2 评论 -
Java 存图方式
链式前向星是一种完全用数组存储图的邻接表的存储结构,插入、遍历的复杂度都是O(E)[E为边的数量];用树的思维无法解决的问题,可以使用图的思维来解决。原创 2024-02-25 17:34:01 · 225 阅读 · 1 评论 -
消除类题目
【代码】消除类题目。原创 2024-01-22 09:29:50 · 74 阅读 · 0 评论 -
贡献法 Contribution method
贡献法。原创 2023-07-02 11:16:34 · 392 阅读 · 0 评论 -
分段处理
【代码】分段处理。原创 2023-07-11 12:29:16 · 415 阅读 · 0 评论 -
树上倍增法求最近公共祖先 LCA
倍增其实就是二分的逆向,二分是逐渐缩小范围,而倍增是成倍扩大。用于解决一些静态树的查询问题。原创 2024-01-06 14:05:14 · 449 阅读 · 0 评论 -
内向基环树
如果找到了一个之前访问过的点xx,且之前访问 x 的时间不早于 startTime,则说明找到了一个新的环,此时的环长就是前后两次访问 x 的时间差,即 clock−time[x]。基环树的关键就是找到环,可以先把环当作这个无根树的 “根” ,也就是把环当成一个点(先不管它),这样一颗基环树就变成了一个普通的树,然后先按照解决普通树的方法对“根”的所有子树依次处理求解答案,最后在单独对环上所有的点进行操作求解最终答案即可。对于不在基环上的点 x,其可以访问到的节点数,是基环的大小,再加上点 x 的深度。原创 2023-11-11 22:14:13 · 464 阅读 · 0 评论 -
矩阵对角线遍历
【代码】矩阵对角线遍历。原创 2023-12-31 09:29:39 · 811 阅读 · 0 评论 -
括号 系列
【代码】Leetcode 基础题。原创 2024-01-07 12:36:22 · 407 阅读 · 0 评论 -
中位数 Median
462. 最小操作次数使数组元素相等 II2033. 获取单值网格的最小操作数2448. 使数组相等的最小开销2607. 使子数组元素和相等1703. 得到连续 K 个 1 的最少相邻交换次数2967. 使数组成为等数数组的最小代价564. 寻找最近的回文数原创 2023-12-18 13:14:24 · 506 阅读 · 0 评论 -
石子游戏 I - IX
数学n 堆石子,按下标偶奇性分成二组。Alice 可以决定 Bob 只能取石子数量小的一组。Alice 总是可以赢得比赛。先手的 Alice 可以自由选择取走一组或二组的一堆石子。如果 Alice 决定取 piles[0],则剩下的部分在开始处和结束处的石子堆都属于第二组,因此 Bob 只能取走第二组的一堆石子。如果 Alice 取 piles[n - 1],则剩下的部分在开始处和结束处的石子堆都属于第一组,因此 Bob 只能取走第一组的一堆石子。原创 2024-02-03 13:33:03 · 123 阅读 · 0 评论 -
跳跃游戏 I - VII
跳跃游戏原创 2022-09-18 11:28:48 · 850 阅读 · 1 评论 -
二进制枚举
78. 子集77. 组合1286. 字母组合迭代器2397. 被列覆盖的最多行数2212. 射箭比赛中的最大得分1601. 最多可达成的换楼请求数目原创 2023-12-10 16:49:40 · 86 阅读 · 0 评论 -
桶排序、计数排序、基数排序
桶排序、计数排序、基数排序原创 2021-11-24 16:14:10 · 3111 阅读 · 0 评论