如果数组具有相同的元素,则返回True

时间:2013-08-08 13:29:48

标签: java

我可以使用一些帮助来比较之前在另一个方法中创建的两个数组。它们被称为enterNumbers,用户输入数组和drawNumbers,一个随机生成的数组。

我的方法标题应如下所示:

 public static boolean containSameElements(int[] enterNumbers, int[] drawNumbers)
{

}

该方法应比较两个数组,如果数字相同则返回true,无论顺序如何。

不寻找答案,也许是一个可以开始的地方。

4 个答案:

答案 0 :(得分:1)

嗯,你可以

  1. 创建两个histograms(使用基于哈希的map / set)来计算元素 在每个数组中,然后比较集/映射。此解决方案为O(n) 空格和O(n)时间平均。为此,请查看MapSet。 (你想要Map或Set取决于重复的存在是否重要)

  2. 另一种解决方案是排序和迭代。这是O(nlogn)时间最差的 案件。请查看Arrays.sort()此解决方案。

答案 1 :(得分:1)

之前对它们进行排序
  Arrays.sort(enterNumbers);
  Arrays.sort(drawNumbers);

  if(Arrays.equals(enterNumbers, drawNumbers)){
            System.out.println("both are same");
    }

答案 2 :(得分:1)

if (drawNumbers.length != enterNumbers.length)
    return false;
List<Integer> base = new ArrayList<Integer>();
for (Integer i : drawNumbers)
    base.add(i);
for (Integer i : enterNumbers)
    base.remove(i);

return base.isEmpty();

答案 3 :(得分:0)

这是一个非常常见的“问题”,可以使用不同的方法解决。如果我理解正确,所有数字都在两个数组中,但它们不必在同一个索引中?

然后你可以用(带两个计数器;每个数组一个)做一个while / for循环,并检查第一个数组中索引0上的数字是否等于第二个数组中的任何数字。如果不是while / for-loop完成且测试失败。如果 继续执行第一个数组中的下一个索引。继续,直到测试完所有内容(第一个数组中的所有数字与第二个数组中的数字)或直到两个数组中都不存在数字。祝你好运