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

Java 在数字数组中查找缺失数字的最快方法

司允晨
2023-03-14
问题内容

我有一个从1到100(包括两端)的数字数组。数组的大小为100。将数字随机添加到数组中,但是数组中有一个随机的空插槽。找到该插槽的最快方法是什么,应该在插槽中放入多少?最好使用Java解决方案。


问题答案:

你可以在O(n)中执行此操作。遍历数组并计算所有数字的总和。现在,从1到N的自然数之和可以表示为Nx(N+1)/2。在你的情况下,N = 100。

从中减去数组的总和Nx(N+1)/2,其中N = 100。

那是丢失的号码。可以在计算总和的迭代过程中检测到空时隙。

// will be the sum of the numbers in the array.
int sum = 0;
int idx = -1;
for (int i = 0; i < arr.length; i++)
{
    if (arr[i] == 0)
    {
         idx = i; 
    }
    else 
    {
         sum += arr[i];
    }
}

// the total sum of numbers between 1 and arr.length.
int total = (arr.length + 1) * arr.length / 2;

System.out.println("missing number is: " + (total - sum) + " at index " + idx);


 类似资料:
  • 问题内容: 给你一个包含 1 到 n 的整数数组,但数组中从 1 到 n 的数字之一丢失了。您需要提供最佳解决方案来找到丢失的数字。数组中的数字不能重复。 例如: 问题答案: 使用公式 n=n*(n+1)/2 求 n 个数字的总和 查找给定数组中存在的元素的总和。 减法(n 个数字的总和 - 数组中存在的元素的总和)。 查找数组中缺失数字的Java程序: 当你运行上面的程序时,你会得到以下输出:

  • 本文向大家介绍在JavaScript中寻找数字数组中的缺失元素,包括了在JavaScript中寻找数字数组中的缺失元素的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受一个长度为n的数字数组。该数组包含从0到n的所有整数(包括0和n),但是仅缺少一个整数,它可以是任何数字,并且不对数组进行排序。我们函数的任务是找到丢失的数字,并在线性时间和恒定空间中将其

  • 我有一个阵列 我想找到数组第一列的最大值,84 这是我的整个代码,它给我这个数组中每列的最大值

  • 我有一个100个随机整数的列表。每个随机整数都有一个从0到99的值。重复是允许的,所以列表可以是这样的 我需要找到最小的整数( 我最初的解决方案是这样的: 但这需要一个用于记账的辅助数组和第二次(可能是完整的)列表迭代。我需要执行这个任务数百万次(实际应用程序是在贪婪的图形着色算法中,我需要用顶点邻接列表找到最小的未使用颜色值),所以我想知道是否有一种聪明的方法可以在没有太多开销的情况下获得相同的

  • 问题内容: 我希望能够在数字数组中找到最接近的较小值。例如,如果我有: 我正在寻找小于以下值的最接近值: 该函数将返回: 另外,如果我传递的数字大于数组中的最大值,则它应返回最大值。如果我传递的数字小于最小值,则应返回nil。 我尝试使用数组上的函数执行此操作,但是单独执行此操作不会产生我想要的结果,因为我需要这样的东西: 但不幸的是,这是无效的。有什么建议?我知道可以使用while循环轻松完成此

  • 问题内容: 检查字符串是否仅包含字母数字字符的最快方法是什么。 我有一些代码会占用大量CPU,我想知道是否有比使用预编译正则表达式更快的方法。 问题答案: 我已经编写了使用正则表达式(根据其他答案)与不使用正则表达式进行比较的测试。在运行Java 1.6的四核OSX10.8计算机上进行的测试 有趣的是,使用正则表达式比手动迭代字符串要慢5到10倍。此外,该功能比的速度略快。一种支持允许扩展Unic