
算法
文章平均质量分 54
李boyang
无
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KMP算法
最长前缀概念: 最长前缀是说以第一个字符开始,但是不包含最后一个字符最长后缀概念: 最长后缀是说以最后一个字符开始,但是不包含第一个字符next 数组定义:在模式串中(下标从0开始),next[i] 表示模式串中以下标 i 处字符结尾的子串的最大相同前后缀的长度。在KMP算法中,该值一方面表示模式串中1~i位置子串中的最长相同前后缀长度,另一方面表示在该位置匹配失败时模式串回溯比较的下一个字符位置(最长前缀末座标的下一个字符。原创 2025-03-16 21:24:27 · 764 阅读 · 0 评论 -
leetcode1143.最长公共子序列
这是一道典型的两个数组的dp问题。原创 2025-03-11 18:35:33 · 511 阅读 · 0 评论 -
leetcode560.和为k的子数组
有的同学可能想到使用双指针来解决这道题,但是数组中的数字可能存在零或者负数,因此不存在单调性,所以不能使用双指针。在看到题目后,我们能想到的解法就是暴力枚举:定义一个下标。,因此我们可以借助哈希表来快速找到前缀和等于。位置为开头的子数组后得到结果,时间复杂度为。,所有可以使用一个变量来代替前缀和数组。在计算i位置之前,哈希表中只保存。思路:先初始化一个前缀和数组。使用一个变量来代替前缀和数组。区间内,有多少个前缀和等于。,但是这样的时间复杂度还是。前缀和加入哈希表的时机。前缀和数组的推导式为。原创 2025-03-10 16:43:31 · 373 阅读 · 0 评论 -
leetcode77.组合
我们将上图的树形结构称之为决策树,从决策树中我们可以看出,n决定决策树的宽度即循环次数,而k决定决策树的深度即递归次数。我们挑选出某一具体路径来进行分析。我们在得到[1,2]后递归返回,想要再得到[1,3],就需要把2。start用来确定下一层递归的开始位置,调用下一层递归函数时传入。也可以将这两个全局变量当作参数传递给递归函数。存放取到的值,调用下一层递归,递归结束后回溯。“还回去”,因此,这便是一道经典的回溯问题。首先我们要定义两个全局变量。,可以避免取到重复元素。原创 2025-03-08 17:50:51 · 470 阅读 · 0 评论 -
leetcode138.随机链表的复制
存的是新链表的结点,一次遍历旧链表后,我们的就把新节点“挂”在与旧链表一一对应的旧节点下。还没有赋值,就需要我们第二次遍历链表,通过哈希表找到新节点指向的的。首先,我们需要一个类型为。存的是旧链表的节点,原创 2025-03-06 10:22:04 · 222 阅读 · 0 评论 -
lettcode.236二叉树的最近公共祖先
分别来记录从根节点到p、q节点的路径,记为。当两条路径长度不同时,使较长路径不断。原创 2025-03-04 10:39:09 · 237 阅读 · 0 评论 -
01背包问题
状态表示是解决动态规划问题中最关键的一步,如果无法确定状态表示,就得不到状态转移方程。一般情况下,以i位置为结尾(开头),在结合题目要求得到状态表示。原创 2025-03-03 09:52:47 · 182 阅读 · 0 评论 -
斐波那契数的三种解法
在递归的时候我们发现,会有大量重复计算,这会使效率大大降低,因此我们可以使用记忆化搜索,即带有”备忘录“的递归,这个”备忘录“可以是。例:画出第五个斐波那契数的树状递归展开图。原创 2025-02-26 14:04:35 · 363 阅读 · 0 评论 -
链表基本算法
链表基本算法原创 2025-02-25 16:50:43 · 188 阅读 · 0 评论