java - 查找有序数组中缺失的整数

标签 java arrays quicksort

我必须在长度= 10的数组中找到丢失的整数(在0-9范围内随机生成)。我的想法是对数组进行排序,然后检查每个数组是否等于数组中的位置大批。我想出了以下代码:

public void nichtGetroffen(){
    s.quickSort(enten, 0, enten.length -1);
    sum = 0;
    for (int i=0; i < enten.length; i++){ 
        if(enten[i] != i){
            System.out.print(i + "");
            sum = sum +1;
        }
    }

问题是它有时有效,有时无效,不幸的是我不知道如何解决这个问题。 (enten是数组的名称)

最佳答案

如果对数组进行排序,如果下一个元素比当前元素大 1 以上,则说明缺少数字。然后,只需在数组的开头和结尾查找缺失的数字即可。

s.quickSort(enten, 0, enten.length -1);

// Print missing numbers less than the smallest element.
for (int j = 0; j < enten[0]; ++j) {
  System.out.println(j);
}

// Print missing numbers between elements.
for (int i = 1; i < enten.length; ++i) {
  // If enten[i - 1] + 1 >= enten[i], this loop body never runs.
  for (int j = enten[i - 1] + 1; j < enten[i]; ++j) {
    System.out.println(j);
  }
}

// Print missing numbers greater than the largest element.
for (int j = enten[enten.length-1] + 1; j <= 9; ++j) {
  System.out.println(j);
}

关于java - 查找有序数组中缺失的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799944/

相关文章:

Java 静态初始化器和反射

c - 传递给 C 函数时丢失 char 数组的值

java - 我的快速排序算法运行速度太慢

c# - K 个最接近原点的点(K 个最小元素),霍尔分区没有给出特定输入的正确答案

java.lang.IllegalArgumentException : java. text.ParseException: header 结束

java - 如何在java中按行和列读取csv文件而不使用外部jar

java - java中字节数组的初始化

C++ 快速排序算法崩溃

java - PROPAGATION_REQUIRED 事务属性在 Spring ?

java - 在Java中,如果每个线程写入单独的单元格空间,是否需要同步对数组的写入访问?