<分区>
Possible Duplicate:
Easy interview question got harder: given numbers 1..100, find the missing number(s)
**不,这是重复的!!!给定数组中的某些数字可能会重复。请引用我帖子底部的示例。谢谢 !!! **
给定一个大小为 n 的数组,包含 1 到 n 范围内的数字。除 2 个数字外,每个数字至少出现一次。找到缺失的数字。
例如A = [2, 4, 5, 4, 6, 5],缺失的数字是 3 和 1。
我的解决方案:
用 O(n lg n) 对 A 排序,然后扫描。
或者,扫描并设置一个新的 bool 数组 B 来标记给定数组中的数字是否出现,例如B[A[i]] = 真或假。然后,扫描 bool 数组到索引为缺失元素的 false 元素。时间 O(n) 但空间 O(n)。
是否存在时间复杂度为 O(n)、空间复杂度为 O(1) 的解?
注意: 加法和乘法不起作用。
例如,给定 A [2, 3, 2, 3],缺失的数字是:1 和 4。
假设缺失的数字是 x 和 y。
我们不能得到:
x + y = 1 到 n 的总和 - A 的总和
x * y = 1 到 n 的乘积/A 的乘积
1 + 4 != 10 - 10
1 * 4 != 24/36
谢谢