507 次浏览
假设我们有两个相同长度的列表,称为权重和值,我们还有一个容量值。此处,weights[i] 和 values[i] 分别表示第 i 个项目的权重和值。如果我们最多可以取容量权重,并且可以对每个项目取任意数量的副本,则我们必须找到可以获得的最大值。因此,如果输入类似于 weights = [1, 2, 3],values = [1, 5, 3],capacity = 5,则输出将为 11要解决此问题,我们将遵循以下步骤-定义一个函数 ... 阅读更多
78 次浏览
假设我们有一个正数 n,我们必须找到完全平方数的最少数量,其和与 n 相同。因此,如果数字为 10,则输出为 2,因为数字为 10 = 9 + 1。要解决此问题,我们将遵循以下步骤-为动态编程创建一个长度为 n + 1 的表,并将其填充为无穷大dp[0] := 0for i := 1, when i*i dp(n+1,INF); dp[0] = 0; for(int i =1;i*i
274 次浏览
假设我们有两个正数列表,称为硬币和工资。此处,coins[i] 表示硬币 i 的值,salaries[j] 表示支付给工人 j 的最低工资额。现在假设我们每种类型只有一个硬币,并且必须给每个工人正好一个硬币,我们必须计算将硬币分发给每个工人的方法数量。如果某些工人以一种方式收到一种类型的硬币,但在另一种方式中收到不同的类型的硬币,则这两种方式是不同的。如果结果非常大,则返回结果模 ... 阅读更多
138 次浏览
假设我们有一棵包含值 0、1 和 2 的二叉树。根节点至少有一个 0 节点和一个 1 节点。现在假设有一个操作,我们在树中删除一条边,树变成两棵不同的树。我们必须找到可以删除一条边的次数,以使这两棵树都不包含 0 节点和 1 节点。因此,如果输入类似于,则输出将为 1,因为我们只能删除 0 到 2 的边。要解决此问题,我们将遵循以下步骤 ... 阅读更多
958 次浏览
假设我们有一棵二叉树,我们必须找到两个数字的列表,其中第一个数字是树中叶子的数量,第二个数字是非叶子节点的数量。因此,如果输入类似于,则输出将为 (3, 2),因为有 3 个叶子和 2 个非叶子节点。要解决此问题,我们将遵循以下步骤-如果 n 为空,则返回 (0, 0)如果 n 的左子节点为空且 n 的右子节点为空,则返回 (1, 0)left := solve(n 的左子节点)right := solve(n 的右子节点)return (left[0] + right[0], 1 + left[1] + ... 阅读更多
197 次浏览
假设我们有一棵二叉树,其中每个节点包含一个 0-9 的数字,我们必须检查其中序遍历是否为回文数。因此,如果输入类似于,则输出将为 True,因为其中序遍历为 [2, 6, 10, 6, 2]。要解决此问题,我们将遵循以下步骤-如果根节点为空,则返回 Truestack := 新栈curr := 根节点inorder := 新列表while 栈不为空或 curr 不为空,则执行以下操作while curr 不为空,则执行以下操作将 curr 推入栈curr := curr 的左子节点node := 从栈中弹出的元素将 node 的值插入到 ... 阅读更多
472 次浏览
假设我们有一个字符串 s,我们必须检查 s 的任何排列是否为回文数。因此,如果输入类似于 s = "admma",则输出将为 True,因为我们可以将 "admma" 重排为 "madam",这是一个回文数。要解决此问题,我们将遵循以下步骤-c := 一个映射,包含每个字符在 s 中的数量count := 0对于 c 所有值的列表中的每个 i,执行以下操作如果 i 为奇数,则如果 count 与 0 相同,则count := count + 1退出循环返回 Falsereturn True让我们看看以下实现 ... 阅读更多
104 次浏览
假设我们有一个链接列表。我们必须检查列表元素是否形成回文数。因此,如果列表元素类似于 [5, 4, 3, 4, 5],则这是一个回文数,但类似于 [5, 4, 3, 2, 1] 的列表不是回文数。要解决此问题,我们将遵循以下步骤-fast := head,slow := head,rev := None 且 flag := 1如果 head 为空,则返回 truewhile fast 和 fast 的下一个节点可用如果 fast 的下一个节点的下一个节点可用,则设置 flag := 0 并中断循环fast ... 阅读更多
170 次浏览
假设我们有一个链接列表。我们必须交换每两个相邻节点(对),并返回其头部。这里的约束条件是,我们不能修改节点的值,只能更改节点本身。因此,如果列表类似于 [1, 2, 3, 4],则结果列表将为 [2, 1, 4, 3]。要解决此问题,我们将遵循以下步骤-如果 head 不存在,则返回 headfirst := head,second := head 的下一个节点,dummy 是一个值为 -1 的新节点dummy 的下一个节点 := first,prev := dummywhile second 不 ... 阅读更多
212 次浏览
假设我们有一个称为 nums 的数字列表和另一个值 target。我们必须找到最大数量的对,其中对于每一对 i < j,i 和 j 不在任何其他对中,并且 |nums[i] - nums[j]| >= target。因此,如果输入类似于 nums = [2, 4, 6, 10, 11],target = 5,则输出将为 2,因为我们可以得到对:(2, 6),(5, 10)为了解决这个问题,我们将遵循以下步骤:N := A 的大小对列表 A 进行排序ans := 0j := N / 2对于 i 的范围从 0 到 ... 阅读更多