问题标签 [subsequence]

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 投票
1 回答
269 浏览

java - 最长递增子序列的问题 - 朴素方法

我正在学习动态编程的基础知识,并遇到了在数组中查找最长递增子序列的问题。在查找 DP 解决方案之前,我决定自己编写代码并提出以下算法,完整的代码可以在这里找到。

这个想法是创建一个List Array来存储所有增加的子序列,并存储每个子序列的相应最大值以便更快地比较。

代码在 O(n^2) 时间内运行,非常适合中小型输入。但是,当我尝试针对一些在线练习门户(如HackerRank)运行代码时,我得到了 TLE(超出时间限制的错误)和错误答案。我理解 TLE 错误,因为有效的解决方案是 DP O(nlogn) 解决方案,但我对此算法生成的错误答案感到困惑。由于此类情况的输入太大(〜10000),我无法手动验证解决方案出错的地方。

可以在此处找到完整的代码以及其中一个数据集的输出。HackerRank 报告的正确答案应该是 195。

0 投票
1 回答
266 浏览

dynamic - 最长回文子序列 VS 反向也是子序列的最长子序列

我试图思考这两个问题之间有什么区别

给定一个序列 S

1) 找到 S 的最长回文子序列。

2)找到S的最长子序列,其反向也是S的子序列。这两个子序列可以相同。
原句是:找到S的最长子序列S',使得有一个与S'相同的子序列和一个与S'相反的子序列。

我为这两个问题推导出的 DP 公式是相同的。

它们实际上是相同的问题吗?我一直在尝试这样想:假设最长的回文子序列是longestP,那么longestP它本身显然是 2) 的可能答案。

2)能否有更长的答案?假设有一个,叫做longerP,那么它的逆也是longerPS 的一个子序列,叫做 reverseLongerP无论是否重叠,都可以从longerP和构造更长的回文reverseLongerP。因此与我们的假设相矛盾,即longestP最长回文。

2)能否有更短的答案?我不这么认为,因为 2) 要求我们找到这种最长的子序列,并且longestP已经是一个可能的答案,任何比longestP不应该考虑的更短的子序列。

以上是我对这个问题的思考,我缺少什么?

我的结论是它们是相同的问题。然而,我被要求给出一个序列,其中包含一个不是回文的字符串 s 及其相反的子序列,而这个序列没有比 s 更长的回文。我不认为这是可能的。

我的想法是,假设这样一个序列存在,那么 s 和它的反序列可以形成一个长度为 的回文length_of_s + length_of_reverse_s - length_of_overlap,所以这个回文的最小长度是length_of_s。但是在那种情况下,length_of_overlap等于length_of_s,所以 s 和它的逆必须相同,s 必须是回文数,这就违反了 s 不能是回文数的限制。

0 投票
1 回答
137 浏览

algorithm - 使用 Ruby/Python/C++/C 在一个巨大的字符串中查找所有长度大于 1 的重复子串

我手头有一个复杂的问题,即我有一个巨大的(超过 200000 个字符):-

输出类似于:-

使用 ruby​​/c/c++ 查找最长重复字符串的解决方案有很多,但查找所有重复子字符串的解决方案很少。

我正在寻找一些常规算法来执行此操作。就像我们有弗洛伊德的循环发现算法一样。用于识别周期等。开始使用这类东西会很棒。

0 投票
5 回答
2790 浏览

algorithm - 在字典中查找String的最长子序列s

查找字符串的最长子序列 s,例如 "abccdde" 并给定字典 {"ab","add","aced"} 。上面示例的结果是“添加”

我在一次采访中被问到,我使用特里树给出了答案,最坏的情况是 O(n*m) ,n 是 s 的长度,m 是字典的长度。但我的平均成本应该很低。我没有通过面试,因为面试官认为我的解决方案不是最好的。有没有人有更好的主意?

0 投票
2 回答
191 浏览

java - 查找具有索引的数组的最大子序列

我想S(h,k)在整数数组中找到最大子序列。我已经有代码(在 Java 中)来找到最大值并且它工作正常,但是我怎样才能得到这两个索引hk从以下?

0 投票
3 回答
1113 浏览

swift - suffix(from:) 和 dropFirst(_:) 之间有什么区别吗?

我突然想到,在 Swift 中处理子序列时,

func suffix(from: Int)似乎与 just 相同dropFirst(_:)(显然,在长度为“10”的数组的情况下,您只需将输入值从“3”更改为“7”。)

只是重复一遍。所以:当然,对于长度为 10 的数组。例如,我的意思是"2"与 "8"func suffix(from: Int)相同dropFirst(_:)

同样upTo/through似乎与dropLast(_:)

除了方便,还有什么区别吗?

(也许在错误条件、性能或?)

我想知道,事实上,在 Swift 内部,一个或另一个是否只是通过调用另一个来实现的?

0 投票
1 回答
1104 浏览

python - 最大单调递增或递减子序列

下面是我的最大单调子序列代码(增加或减少)。在编写此代码之前,我没有做过任何研究,也不知道这是一个常见的计算机科学问题。从我随后的研究来看,似乎普遍接受的最有效的算法是 O(N log N)。这些通常是动态编程类型的解决方案,此时我有点想不通。

我不是算法专家,但下面的代码不是 O(N) 吗?我通过每个列表两次,一次是为了找到增加的序列,一次是为了减少。

我也很感激有关清理它的任何建议。我意识到这些功能非常重复,但是如果不重复第二个功能/通过,我找不到一种一次性完成所有操作的好方法。

0 投票
2 回答
56 浏览

r - Split a data-frame based in ordered multi factorial column

I would like to split a data-frame in a list of data-frames. The reasoning to split it is that we will have always father followed by mother which in turn is followed by offspring. However, these family members might have more than one row (which are always subsequent. e.g father number 1 is in the row 1 and row 2). In my below example I have two families, then I am trying to get a list with two data-frames.

My input:

Thus, my expected output dfout[[1]] would look like:

0 投票
1 回答
86 浏览

python - 我似乎不明白的 Python 语法

因此,我正在查看此 python 代码以查找两个字符串的最长子序列,但我不明白“#line A”为什么第三个参数是 key=len。从我学到的 len 是一个返回字符串长度的函数,但我不明白它是如何在这里使用的。

0 投票
3 回答
1405 浏览

python - 从序列中提取最大长度的子序列 [PYTHON]

我有一个值序列 [1,2,3,4,1,5,1,6,7],我必须找到长度增加的最长子序列。但是,一旦达到比前一个低的数字,该函数就需要停止计数。在这种情况下,此序列中的答案是 [1,2,3,4]。因为它在重置之前有 4 个值。我将如何为此编写 Python 代码?

注意:找到“最长增加子序列”似乎是一个常见的挑战,所以在网上搜索我发现很多解决方案可以计算整个序列的长度,并返回一个增加值的子序列,忽略任何减少,所以在在这种情况下,它将返回 [1,2,3,4,5,6,7]。那不是我要找的。

它需要对每个子序列进行计数,并在达到低于前一个的数字时重置计数。然后它需要比较所有计数的子序列,并返回最长的一个。

提前致谢。