- 博客(19)
- 收藏
- 关注
原创 动态规划:买卖股票的最佳时期含冷冻期
这个问题可以通过动态规划解决,但需要考虑“冷冻期”的约束。我们可以定义两个状态数组,一个表示持有股票的最大利润,一个表示不持有股票的最大利润。
2024-08-24 14:52:12
520
原创 动态规划:让字符串成为回文串的最少插入次数
这个问题可以通过动态规划来解决,具体是最长公共子序列(LCS)问题的一个变体。我们的目标是找到一个最少的插入次数,使得给定的字符串。,每一次操作你都可以在字符串的任意位置插入任意字符。字符串 "zzazz" 已经是回文串了,所以不需要做任何插入操作。字符串可变为 "mbdadbm" 或者 "mdbabdm"。,即先计算短的子串,然后使用这些结果来计算更长的子串。,因为两个相同的字符不需要插入就可以形成回文。的子串最少需要插入的字符数,以使其成为回文串。,因为单个字符总是回文的。成为回文串的最少操作次数。
2024-08-21 19:00:55
423
原创 动态规划:不相交的线
在两条独立的水平线上按给定的顺序写下nums1和nums2中的整数。现在,可以绘制一些连接两个数字nums1[i]和nums2[j]请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。2可以画出两条不交叉的线,如上图所示。但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。32。
2024-08-21 13:56:58
578
原创 动态规划:找出每个位置为止最长的有效障碍赛跑路线
O(n log n),其中 n 是障碍物列表的长度。这是因为对于每个障碍物,我们最多进行一次二分查找和一次列表插入操作,二分查找的时间复杂度为 O(log n),列表插入操作的时间复杂度为 O(n)。在最坏的情况下,每个障碍物都需要进行这两项操作,因此总的时间复杂度为 O(n log n)。], [3,5,6] 长度为 3, [1,5,6] 也是有效的障碍赛跑路线。], [3,5] 长度为 2, [1,5] 也是有效的障碍赛跑路线。], [3,4] 长度为 2, [1,4] 也是有效的障碍赛跑路线。
2024-08-19 19:55:16
1085
原创 动态规划:俄罗斯套娃信封问题
俄罗斯套娃信封问题是一个经典的计算机科学问题,它与动态规划和排序算法紧密相关。问题的核心是找到一种方法,使得给定的一组信封能够按照宽度和高度递增的方式进行嵌套,即一个信封的宽度和高度都比另一个信封大时,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。基于二分查找的动态规划是一种结合了动态规划和二分查找的算法,通常用于解决与排序相关的优化问题。这种问题的一个典型例子是最长递增子序列(LIS):通常用于解决有序序列中的优化问题。结合了动态规划的子问题解决策略和二分查找的快速检索特性。
2024-08-16 16:23:22
540
原创 动态规划:最长递增子序列
最长递增子序列(Longest Increasing Subsequence,简称 LIS)问题是动态规划领域的一个经典问题。这个问题要求在一个给定的整数序列中找到一个最长的递增子序列。这是因为我们有两层嵌套循环,外层循环遍历数组的所有元素,内层循环用于查找可以构成递增子序列的元素。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。个元素结尾的最长递增子序列的长度。数组中的最大值就是整个数组的最长递增子序列的长度。数组中的最大值,即为所求的最长递增子序列的长度。
2024-08-16 15:47:51
532
原创 动态规划:不同的子序列
在动态规划中,状态的定义是核心。对于子序列问题,我们定义dp[i][j]表示在s的前i个字符中,t的前j个字符作为子序列出现的次数。
2024-08-15 17:11:02
1038
原创 动态规划:编辑距离
编辑距离(Edit Distance),又称为莱文斯坦距离(Levenshtein Distance),是衡量两个字符串之间的相似度的一种重要算法。具体来说,它计算从一个字符串转换到另一个字符串所需的最少操作次数。常见的操作包括插入一个字符、删除一个字符和替换一个字符。编辑距离算法在机器翻译、语音识别和拼写纠错等领域有广泛应用。题目给两个单词word1和word2请返回将word1转换成word2所使用的最少操作数。
2024-08-15 15:13:21
1276
原创 动态规划:单词差分
动态规划是解决此类“分割”或“子问题重叠”问题的强大工具,特别是在需要判断一个字符串是否可以通过某种方式(这里是空格拆分成字典中的单词)完全构建起来时。哈希集合的空间复杂度通常取决于字典中单词的数量和长度,但在这里我们可以将其视为与。返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。转换为一个哈希集合(HashSet),以便在 O(1) 时间复杂度内检查一个单词是否存在于字典中。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
2024-08-14 11:34:00
620
原创 动态规划:最长回文子串
方法来解决最长回文子串问题。动态规划通过构建一个表格来存储中间结果,避免重复计算,从而提高效率。: O(n^2),因为我们需要遍历每个子串并检查它是否是回文,遍历过程的复杂度为 O(n^2)。如果子串的两个端点字符相同且子串内的部分也是回文(或者长度小于 3),则。的布尔表来存储每个子串是否为回文的状态。逐步扩展子串的长度,从长度 2 到。"aba" 同样是符合题意的答案。更新最长回文子串的起始位置和长度。: O(n^2),因为需要一个。表中提取出最长回文子串。
2024-08-14 09:59:43
594
原创 动态规划:最大正方形
为右下角的最大正方形的边长。通过这种方式,我们可以计算出整个矩阵中最大正方形的边长,并进一步求得其面积。我们使用动态规划来计算一个矩阵中,以每个位置。可以是 1(当它位于第一行或第一列时),否则需要依赖周围的。我们需要遍历整个矩阵一次,计算每个位置的。我们取它们的最小值加 1 来更新。数组来存储每个位置的最大正方形边长。我们使用了一个与原矩阵相同大小的。组成的二维矩阵内,找到只包含。的最大正方形,并返回其面积。为右下角的最大正方形的边长。为右下角的最大正方形的边长。
2024-08-13 15:53:09
426
原创 动态规划:最小路径和
使用动态规划(Dynamic Programming)来解决这个问题。动态规划适合这种最小路径和问题,因为我们可以通过已计算的结果来逐步构建最终的答案。: O(m * n),其中 m 是行数,n 是列数。每个格子被计算一次。,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。第一行和第一列的值只能通过左边和上边来计算。给定一个包含非负整数的。因为路径 1→3→1→1→1 的总和最小。来表示到达每个格子的最小路径和。: O(m * n),用于存储。每次只能向下或者向右移动一步。
2024-08-13 15:29:50
253
原创 动态规划:删除并获得点数
题目描述思路解题过程复杂度Code 给你一个整数数组 ,你可以对它进行一些操作。每次操作中,选择任意一个 ,删除它并获得 的点数。之后,你必须删除 所有 等于 和 的元素。开始你拥有 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2]输出:6解释:删除 4 获得 4 个点数,因此 3 也被删除。之后,删除 2 获得 2 个点数。总共获得 6 个点数。示例 2:输入:nums = [2,2,3,3,3,4]输出:9解释:
2024-08-03 09:52:34
395
原创 动态规划:打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。给定一个代表每个房屋存放金额的非负整数数组,计算你。偷窃到的最高金额 = 2 + 9 + 1 = 12。偷窃到的最高金额 = 1 + 3 = 4。,一夜之内能够偷窃到的最高金额。
2024-08-03 09:10:13
556
原创 Fastapi连接Mysql数据库
首先,确保你的 Python 环境中已经安装了 FastAPI、uvicorn 、sqlalchemy和pymysql。开启数据库后,浏览器输入127.0.0.1:8000/docs,即可对其进行测试。
2024-08-01 15:56:56
824
2
原创 docker-windowds
链接:https://pan.baidu.com/s/1fQp2mLlEoc_3nQcN9Lpu1Q?复制这段内容打开「百度网盘APP 即可获取」通过百度网盘分享的文件:Docker D…
2024-07-22 15:53:09
190
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人