问题标签 [lis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
70 浏览

algorithm - Mdoify LIS 使得一个元素大于之前所有元素的总和

假设一个数组 = {2,5,7,8,10}。您需要找到最长递增子序列的长度,使得一个元素不小于其之前所有元素的总和。

在这种情况下,答案可以是 {2,5,7}、{2,5,8} 或 {2,8,10}。所以 Length = 3
这在 O(n^2) 中很容易解决。因为 LIS 长度可以在 O(n log n) 中找到。由于问题只问长度,所以我认为这个问题也可以在 O(n log n) 中解决。但我该怎么做呢?

0 投票
1 回答
724 浏览

c++ - LIS 用于 O(NlogN) 或 O(Nlog^2N) 中的坐标值

这是一个标准的动态规划问题LIS PROBLEM

我想要二维坐标中点的最长递增子序列

也就是说,数组中索引 i 处的 2 个点 A(x1,y1),数组中索引 j 处的 B(x2,y2) 可以是递增序列的一部分 if (x1<=x2) && (y1 <=y2) && !(x1==x2 && y1==y2) && (j>i)

我的代码如下,使用标准 DP 为 O(N^2) :-

这是一个 O(N^2) 解决方案,是否可以进一步减少或任何算法来解决 O(NlogN) 或 O(Nlog^2N) ?

供参考在这里找到了一些东西:

具有两个数字的最长递增子序列 (LIS)

第二个答案更适合我的情况,但我们如何实施呢?

需要更好的答案或算法。

0 投票
0 回答
44 浏览

algorithm - LIS 上的错误答案

我正在解决我的大学法官的一个问题,我必须解决所有 lis 序列。n 非常小,所以我正在生成所有子集,如果它们增加且长度最长,我正在打印它。我的代码有什么问题?或者订单可能有问题?

0 投票
2 回答
338 浏览

python - 最长递增子序列,算法出错,不知道为什么

我实现了最长递增子序列(LIS)算法,我认为它会起作用,但结果完全是一团糟。

返回结果:

它应该是什么:

正如我在调试器中看到的那样:

不仅L[i]获得新值,而且列表中的其他main (L)列表也...

我不知道如何避免它。看起来 Python 中的列表与 C 系列的向量语言完全不同......

我和这个斗争了很长时间。巨大的啤酒给那些会发现问题的人:(

0 投票
2 回答
141 浏览

python - Python while循环迭代不起作用

我是 Python 编程的新手,几个小时都无法解决以下问题。我有包含四行的示例文件。我希望在文件行中找到用户时从用户那里获得两个输入,但是我的循环似乎没有遍历所有行。这是文件的内容,元素用空格分隔:

这是我的代码:

我希望输入例如 Google 和 Microsoft 并获得以下输出:

作为两个列表。但是,我的代码只找到第一行而不是其他行。你能告诉我为什么它不迭代其他行吗?如何解决这个问题?提前致谢!

0 投票
3 回答
3135 浏览

algorithm - 最长递增子序列递归解中的一维记忆

计算数组中的 LIS(最长递增子序列)是一个非常著名的动态规划问题。然而,在每个教程中,他们首先在不使用 DP 概念的情况下展示递归解决方案,然后通过应用自底向上 DP(迭代解决方案)来解决它。

我的问题是:

我们将如何在 递归解决方案本身中使用记忆化。不只是记忆化,而是使用一维数组记忆化。

我做了一些研究,但找不到任何相关的东西。虽然有 2 个地方要求递归记忆12,但那里的解决方案是使用 2D Map / Array 进行记忆。

无论如何,用一维数组记忆解决方案会给出错误的输出。这是我所做的:

虽然我知道这个解决方案给出错误输出的原因是:

根据先前的值,给定索引可以有多个解决方案。

但我仍然想知道如何使用一维数组来完成。

我很想知道解决方案,因为我已经读过每个 DP自上而下的解决方案都可以重新构建为自下而上的解决方案,反之亦然。

如果有人可以提供一些见解,那将非常有帮助。

提前致谢。

0 投票
1 回答
166 浏览

arrays - 为什么在触发变量等于 Ruby 中的触发值之前返回 false?几乎增加序列代码战

我用来改进编码的工具之一是Codefights。我已经被困在同一个问题上好几天了,可以使用一些帮助来解决这个问题。谁能告诉我我在这里做错了什么?

以下是 CodeFights 的说明:

给定一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。

例子

对于sequence = [1, 3, 2, 1],输出应该几乎是IncreasingSequence(sequence) = false;

这个数组中没有一个元素可以被删除以获得严格递增的序列。

对于 sequence = [1, 3, 2],输出应该是几乎IncreasingSequence(sequence) = true。

您可以从数组中删除 3 以获得严格递增的序列 [1, 2]。或者,您可以删除 2 以获得严格递增的序列 [1, 3]。

输入输出

[时间限制] 4000ms (rb) [输入] array.integer 序列

约束:2 ≤ sequence.length ≤ 105,-105 ≤ sequence[i] ≤ 105。

[输出] 布尔值

如果可以从数组中删除一个元素以获得严格递增的序列,则返回 true,否则返回 false。

下面是我正在尝试的代码。我进去puts "#{prev}"了几次,看看prev最初设置了什么,在 a1被添加到wrong最后,所以最后prev记录了。

这是目前唯一不能通过的测试:

这应该是正确的,因为99可以拉出并且增加序列可以继续。但是false好像wrong只加了一次之后就返回了。

如果代码应该返回false,如果wrong == 2puts "#{prev}"输出中,我可以看到它prev起源于1并且在超过wrong时触发a并且因为应该只在我不明白为什么它立即返回。如果我在第一次添加a 之后设置,我可以让这个测试通过,但是很多其他测试都不会通过。这是我正在尝试的其他测试的列表。大多数是 Codefights 要求您在进入下一个练习代码之前通过的测试。995wrong1falseprev = sequence[num - 1]wrong

提前感谢您对这个问题的任何了解。

0 投票
2 回答
2815 浏览

java - 如何调用这个递归最长递增子序列函数

我正在学习递归。我以给出数组的算法 LIS(最长递增子序列)为例:

找到最长的递增子序列:

从我在谷歌上搜索的操作的想法开始,我发现了这个功能:

如何在我的示例中调用该函数,以便获得指示的结果?

0 投票
3 回答
881 浏览

algorithm - 带间隙的最长递增子串

我遇到了如下指定的问题:

A为正整数序列。
BA的子串。
C是通过从A中删除B创建的序列。 对于给定的 A ,找到C的最长递增(严格)子串的长度,其中B可以任意选择。

例如让A = [3 2 5 7 1 2 8 1]。如果我们设置B = [1 2],那么C = [3 2 5 7 8 1]并且它的最长递增子串是[2 5 7 8] ,长度为 4。 4 是答案,因为不存在其他B将导致更好的解决方案。

我找不到解决问题的算法(当然是在多项式时间内:)),但我相信这将是最长递增子序列问题的一些变体。
请帮我找到一个好的算法或给我一些提示或参考。

0 投票
1 回答
173 浏览

javascript - javascript:从列表中获取元素

我有一个元素列表(书名列表),右侧有一个标签,用于从列表中删除标题。

我想在我选择的标签旁边获取书名并将其删除。

我的问题是该列表的每个元素都有一个从索引更改的名称。

为了更好地解释我,这是我的代码:

我想单击一个标签并删除与该标签行相对应的书。我已经尝试过我的 custom.js 但我只删除了第一行