724 次查看
假设我们有一个小写字符串 s;我们需要找到 s 中最长回文子序列的长度。所以,如果输入类似于 s = "aolpeuvekyl",则输出将是 5,因为回文是“level”。要解决这个问题,我们将遵循以下步骤 -n := s 的大小定义一个函数 dp()。它将接收 i,j如果 i 等于 j,则返回 1否则,当 i > j 时,返回 0否则,如果 s[i] 等于 s[j],则返回 2 + dp(i + 1, j - 1)否则,返回 dp(i + 1, j) 和 dp(i, j - 1) 的最大值返回 ... 阅读更多
105 次查看
假设我们有一个二维矩阵,我们需要找到最长严格递增路径的长度。要遍历路径,我们可以向上、下、左或右移动,而不是对角线移动。所以,如果输入类似于246157339则输出将是 6,因为最长路径是 [1, 2, 4, 6, 7, 9]要解决这个问题,我们将遵循以下步骤 -n := 矩阵的行数,m := 矩阵的列数moves := 一个包含向上、下、左和右移动的配对列表 [[1, 0], [-1, 0], [0, 1], [0, -1]]定义一个函数 dp()。它将... 阅读更多
147 次查看
假设我们有一棵二叉树。我们需要找到和为偶数的最长路径的长度。所以,如果输入类似于图像,则输出将是 5,因为路径类似于 [5, 2, 4, 8, 5],和 = 24(偶数)。要解决这个问题,我们将遵循以下步骤 -定义一个函数 dfs()。它将接收节点如果节点为空,则返回一个配对 (0, -inf)(left_0, left_1) := dfs(节点的左子节点)(right_0, right_1) := dfs(节点的右子节点)如果节点的值为奇数,则ans := ans、(left_1 + right_0 + 1) 和 (left_0 + right_1 ... 阅读更多
604 次查看
假设我们有三个字符串 s1、s2 和 s3,我们需要找到它们的最长公共子序列的长度。所以,如果输入类似于 s1 = "ababchemxde" s2 = "pyakcimde" s3 = "oauctime",则输出将是 4,因为最长公共子序列是“acme”。要解决这个问题,我们将遵循以下步骤 -m := s1 的大小,n := s2 的大小,o := s3 的大小dp := 一个大小为 (o + 1) x (n + 1) x (m + 1) 的 3D 矩阵对于 i 从 1 到 m,执行对于 j 从 1 到 n,执行对于 ... 阅读更多
324 次查看
假设我们有一个称为 nums 的数字列表,我们需要找到最长算术子序列的长度。众所周知,当 S[i+1] - S[i] 对范围 (0 ≤ i < S 的大小 - 1) 中的每个 i 具有相同的值时,序列 S[i] 是一个算术序列。所以,如果输入类似于 nums = [1, 4, 7, 10, 13, 20, 16],则输出将是 6,子序列 [1, 4, 7, 10, 13, 16] 是一个算术序列,因为每个连续元素之间的差值为 3。要解决这个问题,我们将遵循以下步骤 -n := arr 的大小如果 n
395 次查看
假设我们有一个称为 nums 的数字列表,我们需要找到最长子序列的大小,其中两个连续数字之间的差值在正数和负数之间交替。并且第一个差值可以是正数或负数。所以,如果输入类似于 nums = [6, 10, 4, 2, 3, 9, 4, 7],则输出将是 6,因为一个可能的所需子序列是 [6, 10, 2, 9, 4, 7],并且差值是 [4, -8, 7, -5, 3]。要解决这个问题,我们将遵循以下步骤 &minuS;n := nums 的大小dp := 一个大小为 ... 阅读更多
311 次查看
假设我们有一个称为 nums 的数字列表,并且该列表按非递减顺序排序,我们需要检查它是否可以拆分为任意数量的子序列,使得每个子序列至少具有长度 3 并且连续递增。所以,如果输入类似于 nums = [2, 3, 4, 4, 5, 6, 7],则输出将是 True,因为我们可以将列表拆分为 [2, 3, 4] 和 [4, 5, 6, 7]。要解决这个问题,我们将遵循以下步骤 -counts := 一个包含 nums 的元素及其计数的映射starts := ... 阅读更多
139 次查看
假设我们有一个称为 nums 的数字列表,以及另一个值 k,我们需要检查是否可以将列表拆分为子列表列表,使得每个子列表的长度 ≥ k 并且严格递增。不需要连续拆分列表。所以,如果输入类似于 nums = [6, 7, 5, 10, 13] k = 2,则输出将是 True,因为拆分是 [5, 6] 和 [7, 10, 13]。要解决这个问题,我们将遵循以下步骤 -c := 一个包含 nums 的元素及其计数的映射max_count := c 中所有频率的最大值当 max_count * k 时返回 True
106 次查看
假设我们有一个称为 nums 的数字列表以及另一个值 k,我们需要找到给定列表中三个大小为 k 的非重叠子列表的最大和。所以,如果输入类似于 nums = [2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3] k = 3,则输出将是 27,因为我们可以选择子列表 [2, 2, 2]、[4, 4, 4] 和 [3, 3, 3],总和为 27。要解决这个问题,我们将遵循以下步骤 -P := [0]对于 A 中的每个 x,执行在 P 的末尾插入 P[-1] + x ... 阅读更多
96 次查看
假设我们有一个称为 nums 的数字列表,现在找到两个和相同的集合,并且和最大,然后找到和的值。因此,如果输入类似于 nums = [2, 5, 4, 6],则输出将为 6,因为集合为 [2, 4] 和 [6]。为了解决这个问题,我们将遵循以下步骤 -sum := 0对于 nums 中的每个数字 i,执行sum := sum + i n := nums 的大小定义一个大小为 (n + 1) x (2 * sum + 5) 的二维数组 dp 并填充 -1dp[0, sum] := 0用于初始化 i := 1,当 ... 阅读更多