找到未排序数组中所有缺失数字的最快方法是什么

Nim*_*rod 2 java arrays sorting algorithm

我找到了这个答案:在一组数字中找到缺失数字的最快方法,当你只有一个数字丢失时这很好.

继续这个问题 - 我想知道找到所有缺失数字的最佳(和最快)方法是什么,以及对未排序数组进行排序.(例如,数组就像链接问题中描述的那样 - 数组大小为100,随机数为1-100,但其中一些缺失)

Hen*_*nry 5

显然这些数字在一定范围内,或者谈论缺少数字是没有意义的.因此,可以应用计数排序.然后通过阵列进行线性扫描以找到孔.或者,您可以扫描排序步骤中的计数以查找缺少的元素.

这一切都在O(n)中运行.

示例:给出以下数组6,1,7,8,3,4,9,1,10,3.

现在计算每个数字在数组中出现的频率,方法是遍历数组并递增每个遇到数字的计数:

number 1  2  3  4  5  6  7  8  9 10
count  2  0  2  1  0  1  1  1  1  1
Run Code Online (Sandbox Code Playgroud)

您立即看到2和5确实出现了0次,因此丢失了.

计数也可用于提出排序数组:我们需要2次1次,2次3次,1次4次,依此类推.

1  1  3  3  4  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)