59得票10回答
子数组、子集和子序列的区别

我对子数组、子序列和子集有点困惑。 如果我有{1,2,3,4} 那么 子序列可以是{1,2,4}或{2,4}等。因此,我可以省略一些元素但保持顺序。 子数组将是(假设大小为3){1,2,3} {2,3,4} 那么什么是子集呢? 我对这三个有点困惑。

37得票9回答
String.subString()和String.subSequence()的区别是什么?

String.subSequence() 的Javadoc如下: 返回一个新的字符序列,该序列是此序列的子序列。 以以下形式调用此方法:str.subSequence(begin, end) 表现出与调用完全相同的方式str.substring(begin, end) 这个...

35得票44回答
给定一个数字列表和一个数字k,返回列表中是否存在任意两个数字相加等于k。

这个问题是在Google的编程面试中提出的。我想到了两种方法: 找到所有长度为n的子序列,计算两个元素的和并检查它是否等于k。如果是,则打印Yes,否则继续搜索。这是一种暴力的方法。 将数组按非递减顺序排序。然后从其右侧开始遍历数组。假设我们有一个已排序的数组{3,5,7,10},我们想让...

17得票5回答
最长递增子序列的数量

我正在练习算法,其中一个任务是计算给定 0<n≤10^6 个数字的所有最长递增子序列的数量。 解决方案 O(n^2) 不可行。 我已经实现了查找LIS及其长度的算法(LIS算法),但该算法会将数字转换为尽可能小的数字。因此,不能确定具有先前数字(较大数字)的子序列是否能够达到最长长度,否...

16得票3回答
寻找满足特定条件的最小字符串

最近在面试中,我被问到了下面这个问题。 给定一个字符串S,我需要找到另一个字符串S2,使得S2是S的一个子序列,并且S也是S2+reverse(S2)的一个子序列。这里的“+”表示字符串连接。我需要输出给定S情况下S2的最小长度。 我被告知这是一个动态规划问题,但我无法解决它。有人能帮我...

12得票2回答
理解最长公共子序列算法的时间复杂度

我不理解递归函数用于“最长公共子序列”算法的O(2^n)复杂度。 通常,我会将此符号与算法的基本操作数(在此情况下为比较次数)联系起来,但是这一次在我的脑海中并没有意义。 例如,对于两个长度都为5的字符串,最坏情况下递归函数会计算251次比较。而2^5与该值相差甚远。 有人能解释一下这个...

11得票2回答
OEIS如何进行子序列搜索?

在线整数序列百科全书支持搜索包含您查询的子序列的序列,例如:搜索subseq:212,364,420,428将返回8*n+4序列。(http://oeis.org/search?q=subseq:212,364,420,428) 这个惊人的功能显然是由Russ Cox实现的,如http://...

10得票1回答
最长回文子序列(动态规划解法)

在这个问题的多种动态规划(dp)解法中,一种更简单的解决方案是反转给定的字符串并计算原始字符串和反转后字符串的最长公共子序列(LCS)。 我的问题是,这种方法是否每次都能产生正确的结果?例如,ACBAC 和它的反转CABCA 的最长公共子序列是ABC,虽然不是回文,但由于其他LCS是回文AC...

8得票1回答
最长的重复(非重叠)子序列

如何找到最长的重复(非重叠)子序列(而不是子字符串)? 限制条件: 字符串 S 由最多 100,000 个小写字母'a'-'z' 组成。 示例: 字符串 hanadswomehanudsiome 中,最长的重复(非重叠)子序列为 handsome。 期望的时间复杂度为 O(|S| l...

8得票2回答
有没有时间复杂度为O(n^2)的算法可以生成一个数组的所有子序列?

我想知道是否有一种O(n^2)复杂度的算法可以生成数组的所有子序列。我知道一种算法,但它需要O((2^n)*n)的时间。 int main() { int n; cin >> n; vector<int> a(n); for(int ...