当前位置: 首页 > 面试题库 >

查找一个数组是否包含另一个数组中的所有元素

夹谷星纬
2023-03-14
问题内容

我试图遍历2个数组,外部数组则比另一个数组更长。它将循环遍历第一个,如果第二个数组不包含该int,它将返回false。但是我不知道该怎么做。这是我到目前为止所拥有的:

public boolean linearIn(int[] outer, int[] inner) {
  for (int i = 0; i < outer.length; i++) {
    if (!inner.contains(outer[i])) {
      return false;
    }
  }

  return true;
}

运行时出现此错误:

Cannot invoke contains(int) on the array type int[]

我想知道是否可以不使用嵌套循环(如上)来完成。我知道我做错了,如果有人可以在此问题上提供帮助,那就太好了。我也不确定要在Java文档中寻找什么类int[]


问题答案:

您可以检查较大的数组是否outer包含较小数组中的每个元素,即inner

public static boolean linearIn(Integer[] outer, Integer[] inner) {

   return Arrays.asList(outer).containsAll(Arrays.asList(inner));
}

注意:Integer这种方法需要类型。如果使用原语,
Arrays.asList则将返回,其中List包含type的单个元素int[]。在这种情况下,调用containsAll将不会检查数组的实际内容,而是会比较原始int数组Object引用。



 类似资料:
  • 问题内容: 我想找出$ all是否包含所有$ search_this值并返回true或false。有什么想法吗? 问题答案: 看一下array_intersect()。

  • 问题内容: 我想为数组中的每个值返回一个布尔值,指示它是否在array中。我猜这应该是一个标准程序,但是我找不到有关如何执行此操作的任何信息。我的尝试如下: 但是,我得到了错误: 我使用的是numpy,因此首选使用numpy或标准Python的解决方案。 问题答案: 我相信您可以使用-

  • 问题内容: 我正在寻找一种有效的方法来从javascript数组中删除所有元素(如果它们存在于另一个数组中)。 我想对myArray进行操作以使其保持这种状态: 使用jQuery,我使用和,效果很好: 有没有一种纯Javascript方式无需循环和拼接的方法? 问题答案: 使用方法: 小改进,因为对浏览器的支持增加了: 使用arrow functions:下一个适应:

  • 我正在寻找一种有效的方法,从一个javascript数组中删除所有元素,如果它们存在于另一个数组中。 我想对myArray进行操作,使其保持这种状态: 使用jQuery,我使用和,效果很好: 有没有一种纯javascript的方法可以做到这一点,而不需要循环和拼接?

  • 问题内容: 我有两个数组,我想检查是否每个元素都在中。如果元素的值在中重复,则该元素的值必须相等。最好的方法是什么? 问题答案: 一种选择是对两个数组进行排序,然后遍历两个数组,然后比较元素。如果在超级袋中未找到子袋候选中的元素,则前者不是子袋。排序通常为O(n *log(n)),比较为O(max(s,t)),其中 s 和_t_是数组大小,总时间复杂度为O(m * log(m)) ,其中m =ma