当前位置: 首页 > 知识库问答 >
问题:

我如何获得两个数组之间的交集作为一个新数组?

杜元明
2023-03-14

在各种情况下,我多次面对这个问题。它对所有编程语言都是通用的,尽管我对C或Java很满意。

char[] A = {'a', 'b', 'c', 'd'};
char[] B = {'c', 'd', 'e', 'f'};

我希望避免一个数组在另一个数组中重复迭代,这将增加执行时间(长度A乘以长度B),这在巨大数组的情况下是太多了。

我们有没有办法在每一个数组中做一次传递来获得公共元素?

共有1个答案

曾明诚
2023-03-14

因为在我看来这是一个字符串算法,我假设暂时不可能对这个序列(因此是字符串)进行排序,那么您可以使用最长公共序列算法(Longest Common sequence algorithm,LCS)

假设输入大小不变,则问题的复杂度为O(nxm)(两个输入的长度)

 类似资料:
  • 我有一个问题,在java中找到两个数组之间的区别,我的例子就像假设我们有两个数组。数组和数组。我想有两个结果第一个结果是一个数组,它从数组“A”中找到丢失的对象,第二个结果是一个数组,它在数组“B”中找到添加的对象。第一个结果应类似于,第二个结果类似于。 感谢您的评论。

  • 我有组表,它有列id,名称,时间戳。当有一个组的更新时,时间戳也被更新为Current。 我正在尝试使用查询显示两个ID之间的组计数。 group表具有: 任何帮助都是非常感谢的。

  • 问题内容: 我有两个这样的结果集: 我需要的最终结果是这些数组之间的差异–最终结果应如下所示: 是否可以在JavaScript中执行类似的操作? 问题答案: 仅使用本机JS,类似的方法将起作用:

  • 问题内容: 我在main中调用了swap方法,但它没有任何改变。我究竟做错了什么? 我的代码产生 以正常的升序排列,我希望它交换第4个和第15个元素。 问题答案: 移动方法调用:- 在您的for循环之外。因为,如果您的循环运行次数,则不会影响阵列。 另外,您需要先初始化数组,然后才能实际交换元素。调用之前需要执行的操作。

  • 问题内容: 如果我有两个数组,例如 我想以以下模式[one [0],two [0],one [1],two [1]等合并/交织数组。 什么是实现合并功能的好方法? 问题答案: 如果两个数组的 长度相同, 那么这可能是一种解决方案: 此处枚举并行的数组,并返回一对对(2元素元组)的序列,每个数组中都有一个元素。从每对创建一个2元素数组,并将结果连接起来。 如果数组的 长度 可以 不同, 则可以将较长

  • 问题内容: 假设我有个数组,另一个数组。我如何得到结果数组? 问题答案: 如果您不需要保留订单,并考虑和保持一致: