算法题
文章平均质量分 69
Hannn~
一起加油呀!
展开
-
【力扣】重排链表
给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。原创 2024-07-16 23:06:56 · 275 阅读 · 0 评论 -
【力扣】数组中的第K个最大元素
l, left](该部分小于基准元素key)、[left + 1, right - 1](等于基准元素key)、[right, r](大于基准元素key)。3、计算每部分所包含的元素个数,分别为a 、b = right - left - 1、 c = r - right + 1;请注意,你需要找的是数组排序后的第。你必须设计并实现时间复杂度为。个最大的元素,而不是第。1、随机选择基准元素。原创 2024-07-05 16:42:37 · 343 阅读 · 0 评论 -
【力扣】完全平方数
是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。我们可以将该问题转化为完全背包问题。的完全平方数的最少数量。的完全平方数的最少数量。我们可以根据小于等于。原创 2024-06-25 00:00:46 · 519 阅读 · 0 评论 -
完全背包(模板)
你有一个背包,最多能容纳的体积是V。现在有n种物品,每种物品有任意多个,第i种物品的体积为vi ,价值为wi。(1)求这个背包至多能装多大价值的物品?(2)若背包恰好装满,求至多能装多大价值的物品?第一行两个整数n和V,表示物品个数和背包体积。接下来n行,每行两个数vi和wi,表示第i种物品的体积和价值。输出有两行,第一行输出第一问的答案,第二行输出第二问的答案,如果无解请输出0。原创 2024-06-21 18:39:37 · 947 阅读 · 0 评论 -
【力扣】目标和
给你一个非负整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个2'+'1'-'"+2-1"返回可以通过上述方法构造的、运算结果等于target的不同的数目。5一共有 5 种方法让最终目标和为 3。1。原创 2024-06-14 13:34:03 · 956 阅读 · 0 评论 -
01背包问题(模板)
你有一个背包,最多能容纳的体积是V。现在有n个物品,第i个物品的体积为vi,价值为wi。(1)求这个背包至多能装多大价值的物品?(2)若背包,求至多能装多大价值的物品?第一行两个整数n和V,表示物品个数和背包体积。接下来n行,每行两个数vi和wi,表示第i个物品的体积和价值。输出有两行,第一行输出第一问的答案,第二行输出第二问的答案,如果无解请输出0。原创 2024-06-12 15:49:55 · 740 阅读 · 0 评论 -
【力扣】 两个字符串的最小ASCII删除和
给定两个字符串s1 和 s2,返回使两个字符串相等所需删除字符的 ASCII 值的最小和 。示例 1:输入: s1 = "sea", s2 = "eat"输出: 231解释: 在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。在 "eat" 中删除 "t" 并将 116 加入总和。结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。原创 2024-06-08 23:46:04 · 976 阅读 · 0 评论 -
【力扣】正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。原创 2024-06-06 13:41:10 · 448 阅读 · 0 评论 -
【力扣】通配符匹配
给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 '?' 和 '*' 匹配规则的通配符匹配: '?' 可以匹配任何单个字符。 '*' 可以匹配任意字符序列(包括空字符序列)。判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。原创 2024-06-05 15:08:41 · 531 阅读 · 0 评论 -
【力扣】矩阵中的最长递增路径
1、先求出以矩阵中的每个单元格为起点的最长递增路径题目中说,对于每个单元格,你可以往上,下,左,右四个方向移动。那么以一个单元格为起点的最长递增路径就是:从该单元格往上,下,左,右四个方向走的四条递增路径中的最大值(即最长的一条递增路径)。2、在求出的所有最长递增路径中找最大值因为题目是求矩阵中的最长递增路径,所以要在求出的所有最长递增路径中找最大值。3、使用“记忆化搜索”(递归+“备忘录” )来解决该题。原创 2024-06-04 13:19:42 · 451 阅读 · 0 评论 -
【力扣】不同的子序列
如下所示, 有 5 种可以从 s 中得到 "bag" 的方案。出现的个数,结果需要对 109 + 7 取模。为了简化初始化,我们可以给dp表增加一行、一列(如下所示, 有 3 种可以从 s 中得到。「从上往下」填每一行,每一行「从左往右」。本题属于动态规划类型的。根据「状态表示」,返回。原创 2024-06-03 19:28:53 · 330 阅读 · 0 评论 -
【力扣】不相交的线
在两条独⽴的⽔平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制⼀些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满⾜满⾜:• nums1[i] == nums2[j]• 且绘制的直线不与任何其他连线(⾮⽔平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于⼀条连线。以这种⽅法绘制线条,并返回可以绘制的最⼤连线数。原创 2024-06-02 15:05:38 · 215 阅读 · 0 评论 -
【力扣】最长递增子序列
递归含义:dfs递归函数的作用,给他⼀个数 i ,返回以 i 位置为起点的最长递增子序列的长度;函数体:遍历 i 后面的所有位置,看看谁能加到 i 这个元素的后面(统计所有情况下的最大值。递归出口:因为我们是判断之后再进入递归的,因此没有出口。加上⼀个备忘录(本题只需一个一维数组,如在递归返回前,用memo[i]来存放以 i 位置为起点的最长递增子序列的长度每次进入递归的时候,去备忘录里面看看;每次返回的时候,将结果加入到备忘录里面。递归含义 -> 状态表示;原创 2024-06-02 14:13:55 · 475 阅读 · 0 评论 -
【力扣】最长公共子序列
给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。原创 2024-06-01 14:57:18 · 1157 阅读 · 0 评论 -
利用“记忆化搜索“解斐波那契数
如果有一个“备忘录”,我们每次向上返回结果之前,把结果存在“备忘录”一份,下次递归的时候,先看看备忘录,是否有我们需要的值,有的话,直接从备忘录里面取值,就不用再往下递归,便不会有重复计算。2、带备忘录的递归、记忆化搜索和动态规划其实都是一回事(本质相同:对解法的优化,把已经计算过的值给存起来)(对于本题,使用数组即可,可变参数就是数组的下标,代表第几个斐波那契数;答:不是的,只有在递归过程中,出现了大量完全相同的问题时,才能用记忆化搜索的方式优化。1、所有的递归(暴搜、深搜),都能改成记忆化搜索吗?原创 2024-05-31 21:49:33 · 249 阅读 · 0 评论 -
【力扣】1312. 让字符串成为回文串的最少插入次数
本题我们利用的思想来解决。首先创建一个dp数组,根据「状态转移方程」,没有不能递推表示的值。。根据「状态转移方程」,我们发现,在 dp表所表示的矩阵中,dp[i + 1]表示下一行的位置,dp[j - 1]表示前一列的位置。因此我们的填表顺序应该是。原创 2024-05-30 23:15:09 · 295 阅读 · 0 评论 -
【力扣】LCR 130. 衣橱整理
这是⼀道非常典型的「搜索」类问题。我们可以通过「深搜」或者「宽搜」,从[0, 0] 点出发,按照选择或,但不能移动到衣柜之外一直往 [m - 1,n - 1]位置走。同时,设置⼀个全局变量。每次走到⼀个合法位置,就将全局变量加一。当我们把所有能走到的路都走完之后,全局变量里面存的就是最终答案。原创 2024-05-30 21:39:50 · 427 阅读 · 0 评论