为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

月关宝盒 2019-11-05 16:23:20
我有一个从1到100(包括两端)的数字数组。数组的大小为100。将数字随机添加到数组中,但是数组中有一个随机的空插槽。找到该插槽的最快方法是什么,以及应该在插槽中放入多少数字?最好使用Java解决方案。
查看完整描述

3 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

我们可以使用比求和更安全的XOR操作,因为在编程语言中,如果给定的输入很大,则可能会溢出并给出错误的答案。


在寻求解决方案之前,请知道A xor A = 0。因此,如果我们对两个相同的数字进行XOR运算,则该值为0。


现在,对数组中存在的元素进行XORing [1..n]会取消相同的数字。因此,最后我们将得到缺少的号码。


// Assuming that the array contains 99 distinct integers between 1..99

// and empty slot value is zero

int XOR = 0;

for(int i=0; i<100; i++) {

    if (ARRAY[i] != 0) // remove this condition keeping the body if no zero slot

        XOR ^= ARRAY[i];

    XOR ^= (i + 1);

}

return XOR;

//return XOR ^ ARRAY.length + 1; if your array doesn't have empty zero slot. 


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 1183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信