java - 检查数组中是否有多个元素

标签 java arrays

通过模式,我检查数组是否有重复项。我在这里检查了类似的查询,但他们用包含 ArrayList 和 HashMap 的答案解决了这个问题。我对它们不熟悉并尝试用数组来回答它。我的以下代码仅适用于 1 个重复项,无法执行多个重复项检测。

public class Mode {

    public static void main(String[] args) {
        int[] num = {2,3,4,5,8,8,8,7,7,7};
        int mode = mode(num);
        System.out.println(mode);
    }

    public static int mode(int[] num){
        for(int x=0; x < num.length; x++){
            for(int y=x+1; y < num.length; y++){
                if(num[x] == num[y]){
                    return num[x]; 
                }
            }
        }
        return num[0]; 
    }
}

最佳答案

方法 mode 应返回 HashSet包含重复项而不是 int。另请注意,您的内部循环不正确。你应该这样做:

public static HashSet<Integer> mode(int[] num){
    HashSet<Integer> dup = new HashSet<>();
    for(int x=0; x < num.length; x++) {
       for(int y=0; y < num.length; y++) {
          if(num[x] == num[y] && x != y) {
              dup.add(num[x]); 
          }
       }
    }
    return dup;
}

该解的复杂度为 O(n2)。如果您满足以下条件,您可以获得更好的解决方案:

  • 对数组进行排序。
  • 在上面旅行(仅一次),如果num[i] == num[i + 1],则为重复项。

此解决方案的复杂度为 O(n*log(n)) - 仅在数组上排序和移动一次。

关于java - 检查数组中是否有多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246068/

相关文章:

java - 如何在 Java 中将对象从一种类型复制到另一种类型?

java - Apache Pig,程序运行问题

java - Hibernate标准返回包含相同对象的列表,如何解决它?

java - 与 Kafka 消费者匹配的扩展模式

arrays - Perl:如何按出现次数对数组的项目进行排序和转换

arrays - vb.net 获取数组的第一行和最后一行的 *values*

Android 中的 Java DateFormat.SHORT 未按预期工作

java - 从文本文件中读取并忽略空格

php - 为什么数据只在 foreach 循环中显示,而在外部是非对象时显示?

C sprintf缓冲区sigsegv错误