📝 动态编程

1324篇技术文档
  查找 N 叉树中给定节点的每个子树的 GCD 以进行 Q 查询

📅  最后修改于: 2021-09-17 06:41:44        🧑  作者: Mango

给定一个包含N 个节点的N 元树,与每个节点相关联的值和Q 个查询,其中每个查询包含一个节点。任务是找到子树中存在的所有节点(包括其自身)的值的GCD。例子:Tree:query[]: {2, 3, 1}Output:{3, 4, 1}Explanation:Forquery 1: GCD(subtree(node2)) = GCD(node2) = GCD(3) =3Forquery 2: GC...

  最小的 N 位数字,其数字的平方和是一个完全平方数

📅  最后修改于: 2021-09-17 06:41:51        🧑  作者: Mango

给定一个整数 N,找出最小的 N 位数字,使得该数字的数字平方和(以十进制表示)也是一个完全平方数。如果不存在这样的数字,则打印 -1。例子:Input :N = 2Output :34Explanation:The smallest possible 2 digit number whose sum of square of digits is a perfect square is 34 be...

  将 N 拆分为给定范围内 K 个数字的总和的方法数

📅  最后修改于: 2021-09-17 06:41:58        🧑  作者: Mango

给定四个正整数N、K、L和R,任务是将 N 拆分为[L, R]范围内 K 个数字的总和。注意:由于方式的数量可能非常大。输出答案模1000000007。例子:Input :N = 12, K = 3, L = 1, R = 5Output :10{2, 5, 5}{3, 4, 5}{3, 5, 4}{4, 3, 5}{4, 4, 4}{4, 5, 3}{5, 2, 5}{5, 3, 4}{5, 4...

  最小化要添加到给定数组的元素,使其包含另一个给定数组作为其子序列 | 2套

📅  最后修改于: 2021-09-17 06:42:04        🧑  作者: Mango

给定一个由N 个不同整数组成的数组A[]和另一个由M 个整数组成的数组B[],任务是找到要添加到数组B[] 中的最小元素数,使得数组A[]成为数组B[] 的子序列。例子:Input:N = 5, M = 6, A[] = {1, 2, 3, 4, 5}, B[] = {2, 5, 6, 4, 9, 12}Output:3Explanation:Below are the elements that...

  求马尔可夫链中给定时间状态的概率 |设置 1

📅  最后修改于: 2021-09-17 06:42:11        🧑  作者: Mango

给定一个马尔可夫链 G,如果我们从时间 t = 0 的状态 S 开始,我们就有了在时间 t = T 到达状态 F 的概率。马尔可夫链是由各种状态和从一种状态移动到另一种状态的概率组成的随机过程。我们可以使用有向图来表示它,其中节点表示状态,边表示从一个节点到另一个节点的概率。从一个节点移动到另一个节点需要单位时间。出边的相关概率之和对于每个节点都是一个。考虑给定的马尔可夫链( G ),如下图所示:...

  计算遍历矩阵的方法数

📅  最后修改于: 2021-09-17 06:42:18        🧑  作者: Mango

给定一个二维矩阵,如何从左上角到右下角遍历它?条件 – 在任何特定单元格中,可能的移动是向下或向右,没有其他可能的步骤。到达终点时停止。例子:如果我们仔细观察,我们会发现一个单元格可以到达的方式数=它可以到达它上面的单元格的方式数+它可以到达它左边的单元格的方式数。所以,根据它开始填充二维数组,并在完全填充数组后返回最后一个单元格。下面是上述方法的实现:C++JavaPython3C#PHPJav...

  最长递增子序列的 C++ 程序

📅  最后修改于: 2021-09-17 06:42:24        🧑  作者: Mango

最长递增子序列 (LIS) 问题是找到给定序列的最长子序列的长度,使子序列的所有元素按递增顺序排序。例如,{10, 22, 9, 33, 21, 50, 41, 60, 80}的LIS长度为6,LIS为{10, 22, 33, 50, 60, 80}。例子:重叠子问题:考虑到上述实现,以下是大小为 4 的数组的递归树。 lis(n) 为我们提供了 arr[] 的 LIS 长度。我们可以看到有很多子...

  OLA 面试经历 |组 10(DS)

📅  最后修改于: 2021-09-17 06:42:30        🧑  作者: Mango

1.关于我的 DS 相关工作。为什么要改变?IsBST()带有开始和结束索引的 Kadane 算法。2.什么是支持向量机?给定一个带有未加密数据的硬盘。关于硬盘的数据(使用LDA),你能说些什么?LDA 是有监督的还是无监督的?有多少种方法可以进行无监督学习(K-means、自动编码器等)?决策树如何工作?您如何及时在任何新领域执行。(如 spark 快速入门)3.如何处理具有不确定性的 LDA(...

  Floyd Warshall 算法 | DP-16

📅  最后修改于: 2021-09-17 06:42:36        🧑  作者: Mango

Floyd Warshall 算法用于解决所有对最短路径问题。问题是在给定的边加权有向图中找到每对顶点之间的最短距离。例子:Floyd Warshall 算法作为第一步,我们初始化与输入图矩阵相同的解矩阵。然后我们通过将所有顶点视为中间顶点来更新解矩阵。想法是一一选取所有顶点并更新所有最短路径,其中包括选取的顶点作为最短路径中的中间顶点。当我们选择顶点编号 k 作为中间顶点时,我们已经将顶点 {0...

  节点到树的每个节点的最远距离

📅  最后修改于: 2021-09-17 06:42:43        🧑  作者: Mango

给定一棵树,任务是找到给定树中每个节点到另一个节点最远的节点。例子Input:Output:2 3 3 3 4 4 4Explanation:Maximum Distance from Node 1 : 2 (Nodes {5, 6, 7} are at a distance 2)Maximum Distance from Node 2 : 3 (Nodes {6, 7} are at a dis...

  检查是否所有人都可以在两台机器上投票

📅  最后修改于: 2021-09-17 06:42:50        🧑  作者: Mango

有n个人和两个相同的投票机。我们还给出了一个大小为 n 的数组a[],使得a[i]存储第 i 个人去任何机器、标记他的投票并返回所需的时间。在某一时刻,每台机器上只能有一个人。给定一个值 x,定义机器运行的最大允许时间,检查是否所有人都可以投票。例子:方法一设sum为所有 n 个人花费的总时间。如果 sum <=x,那么答案显然是 YES。否则,我们需要检查给定的数组是否可以分成两部分,使得第一部...

  可以放入其他更大信封的最大信封数量

📅  最后修改于: 2021-09-17 06:42:56        🧑  作者: Mango

给定N个信封,作为{W, H}对,其中W为宽度,H为高度。当且仅当一个信封的宽度和高度都大于另一个信封的宽度和高度时,一个信封可以装入另一个信封。找出可以放入另一个信封的最大信封数量,依此类推。不允许旋转信封。例子:Input:envelope[] = {{4, 3}, {5, 3}, {5, 6}, {1, 2}}Output:3Explanation:The maximum number of...

  最小成本路径的Java程序

📅  最后修改于: 2021-09-17 06:43:02        🧑  作者: Mango

给定成本矩阵 cost[][] 和在 cost[][] 中的位置 (m, n),编写一个函数,返回从 (0, 0) 到达 (m, n) 的最小成本路径的成本。矩阵的每个单元格表示遍历该单元格的成本。到达路径的总成本 (m, n) 是该路径(包括源和目的地)上所有成本的总和。您只能从给定的单元格向下、向右和斜下方的单元格遍历,即从给定的单元格 (i, j)、单元格 (i+1, j)、(i, j+1)...

  打印最长双调子序列(空间优化方法)

📅  最后修改于: 2021-09-17 06:43:08        🧑  作者: Mango

给定一个大小为N的数组arr[],任务是打印给定数组的最长双调子序列。注意:如果存在多个解决方案,则打印任何解决方案。例子:Input:arr[] = {1, 11, 2, 10, 4, 5, 2, 1}Output:1 11 10 5 2 1Explanation:All possible longest bitonic subsequences from the above array are...

  重新排列给定数组以使其等于另一个给定数组所需的最小成本

📅  最后修改于: 2021-09-17 06:43:15        🧑  作者: Mango

给定两个分别由N和M 个整数组成的数组A[]和B[]以及一个整数C,任务是找到使序列A与B完全相同(仅由不同元素组成)所需的最小成本对数组A[]执行以下操作:从数组中删除任何成本为0 的元素。在数组中的任意位置插入一个新元素,成本为C。例子:Input:A[] = {1, 6, 3, 5, 10}, B[] = {3, 1, 5}, C = 2Output:2Explanation:Removin...