- 博客(9)
- 收藏
- 关注
原创 动态规划算法----回文串问题
动态规划算法为解决回文串问题提供了一种系统性的方法。通过合理定义状态和状态转移方程,我们能够有效地找出最长回文子串。理解这一过程不仅有助于解决具体的回文串问题,还能提升对动态规划算法的理解和运用能力,在面对其他类似的字符串处理或最优子结构问题时,能够更得心应手地运用动态规划思想找到解决方案。希望本文的讲解能帮助你在算法学习的道路上更上一层楼,对动态规划与回文串问题有更深入的认识。
2025-01-18 15:49:10
742
原创 动态规划算法之子数组序列----单词拆分
单词拆分给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。true返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。true返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。注意,你可以重复使用字典中的单词。
2024-12-25 20:35:02
433
原创 动态规划算法之子数组系列----最长湍流子数组
以 i 位置结尾的数组,结合 i - 1 位置可以分为上升或下降趋势,判断是否为湍流数组还要结合 i - 1以前的位置进行判断,故需要两个dp表进行状态表示。在最差的情况下,每个元素也可以构成一个湍流子数组,即f 表和g表最差情况下都是1,故可以将f和g表中的全部元素初始化为1。f [ i ] :表示以 i 位置结尾的所有子数组中,最后呈现上升状态的最长湍流子数组长度。g [ i ] :表示以 i 位置结尾的所有子数组中,最后呈现下降状态的最长湍流子数组长度。(1)对于f[i]可以分以下情况讨论。
2024-12-22 16:48:30
918
原创 动态规划算法-子数组系列之_等差数列划分
即nums[i] - nums[i-1]!= nums[i-1] - nums[i-1]此时dp[ i ] = 0;(1)i i-1 i-2三个位置的元素可以构成等差数列,即nums[i] - nums[i-1] == nums[i-1] - nums[i-1]nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。(2)i 、i -1 、i -2 三个位置的元素不可以构成等差数列,此时dp[ i ] = dp[ i-1] +1;
2024-12-21 19:24:01
510
原创 动态规划算法-----子数组系列
子系列数组问题通常指的是在一个给定的数组中,寻找某种特定性质的子数组或子序列。子数组(Subarray)是数组的连续部分,而子序列(Subsequence)是从原数组中通过删除一些元素(但不改变相对顺序)得到的数组。例如,给定一个数组,可以有很多不同的子数组和子序列。
2024-12-18 20:55:53
806
原创 动态规划算法----简单多状态模型
多状态模型是指在动态规划中,状态不仅仅由单一变量决定,而是由多个变量共同决定。每个状态代表了问题在某个具体条件下的子问题,其转移方程需要考虑所有相关的状态变量。动态规划的多状态模型为我们解决复杂问题提供了强有力的工具。掌握这种模型的构建方法,不仅能帮助我们高效解决算法题,还能将其应用到现实中的优化问题中。希望本文对你理解动态规划多状态模型有所帮助!
2024-12-13 21:12:13
1987
原创 动态规划算法_斐波那契数列模型
通过分析上述解法我们可以发现,对于创建的dp表,每次只需用到四个数据的空间,所以可以选择滚动数组来优化空间;但是要注意迭代的顺序,具体可以参考下面的代码。空间优化过的时间复杂度仍然是O(N),但是空间复杂度是O(1)。
2024-11-24 21:24:35
915
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人