数组A在n-1
中包含range [0,n-1]
个唯一整数,也就是说,此范围内的一个数字不在A
中。设计O(n)
算法以查找该数字。除阵列A本身外,您只能使用O(1)
个额外空间。
任何人都可以提供帮助?
答案 0 :(得分:3)
将数字从0加到n-1,然后找到数组的总和,缺少的数字是sum - 数组之和
说明:如果0 + 1 + 2 + ... + n-1总和,并且数组除了一个之外还有所有这些数字,所以当你添加到0 + 1 + 2 + ... + n-1时数组中带有“ - ”前缀的数字,每个数字都将取消他的“+”对应物,因此你将留下“+”,它在数组中没有对应物,因此这是缺少的数字
注意:存储一个数字是log(n)位,但在大多数地方(我见过)他们不会以比特分辨率说话并且存储一个数字是O(1)空间,所以它取决于你在问题中的定义方式
答案 1 :(得分:0)
给定0-99范围内具有随机排序的唯一整数的 a (大小100)和 b (大小99)。
a = RandomSample[Range[0, 99]]
b = Take[RandomSample[Range[0, 99]], 99]
在 b 中找到缺少的元素。
element = Total[a]-Total[b]
使用的语言是Mathematica。