社区讨论

站外题求助,可能是位运算?

学术版参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo22615t
此快照首次捕获于
2023/10/23 06:46
2 年前
此快照最后确认于
2023/11/03 07:08
2 年前
查看原帖
今天遇到了这样一道题:
将1—n的n个数随机删去两个数,再乱序排列,求被删去的数是什么, 能否使用O(1)的空间复杂度和O(n)的时间复杂度解决这个问题?
初步想到的方法是位运算:
(1)先记录这组数的总和,用1—n的总和减去这组数的总和,得到sum;
(2)1—n的异或与这组数的异或进行异或,得到丢失的两个数字的异或xor_mis;
(3)枚举判断;if((i^(sum-i))==xor_mis)
但在这里遇到了问题,比如1—6删去3,4,发现简单的判断方法会造成多解(3^4=7,3+4=7; 1^6=7,1+6=7)
实在想不到思路,特来求教,希望大佬指点一下思路,还是根本不可做?

回复

4 条回复,欢迎继续交流。

正在加载回复...