- 博客(61)
- 收藏
- 关注
原创 最后一块石头的重量-01背包
非负数组nums中,子序列累加和不超过t,但是最接近t的累加和是多少。01背包问题(子集累加和尽量接近t) + 空间压缩。
2025-08-28 10:44:17
197
原创 使数组k递增的最少操作次数
分组之后,寻找每个组内的最长不下降子序列的长度,用这个组的总长度减去最长不下降子序列的长度就可以得到这一组需要修改的元素个数了。把每一组需要修改的个数累加起来就可以得到答案。可以发现元素只与自己同余下标的元素有关系,所以可以直接分组做,分成k组。
2025-08-20 19:31:26
189
原创 交错字符串-二维dp
考虑dp(i,j),当前处于s3的第i+j-1个字符,这个字符有两种可能的来源,可能来自于s1的第i个字符,也可能来自于s2的第j个字符,如果这三个字符都相等,则在两种情况中取一种情况即可,也就是取或。这题的状态定义比较巧妙,dp是一个bool类型的数组,dp(i,j)表示s1的前i个字符加上s2的前j个字符是否能够交错形成s3的前i+j个字符。
2025-08-13 21:24:49
240
原创 最长回文子序列-二维动态规划
解法一中,将一个字符串逆序,使用reverse(s.begin(),s.end())与公共子序列很相似,甚至解法一可以直接使用最长公共子序列。
2025-08-07 13:21:16
241
原创 不同的子序列Ⅱ
基本框架是基于集合,每次往每个集合后面添加一个字符,但是需要去重,于是就用到了dp的思想,如果某个字符是之前添加过的,那么再添加一次的话,必然会产生,与当前以该字符结尾的字符串一样数量的重复字符串,把该数量减掉,就可以得到实际增加的数量。
2025-08-04 13:08:24
298
原创 环绕字符串中的唯一子字符串-动态规划
这题的状态定义比较特别,虽然依赖于位置,但是要寻找最大的并且去重,就需要根据26个字符来定义状态了。注意更新条件,要寻找最长的,所以比原来更长才更新。
2025-08-03 17:58:25
310
原创 一维dp-序列类型-最长有效括号
这题的难点在于状态转移方程,由于这里是一维序列,所以很容易想到用“以第i个字符结尾的…”来定义状态,关键就在于寻找后面的状态是怎样依赖于前面的状态。
2025-08-02 20:19:50
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人