给定一个数组,A,按某种顺序包含除了一个k位非负整数外的所有数据,找到具有以下约束的缺失整数:
您只能使用其中一个整数执行两项操作:
例如:如果k为3,则数组将包含除0到7之外的所有整数,其任务是找到缺少的整数。
答案 0 :(得分:3)
提示:你能看出丢失的号码是偶数还是奇数?
答案 1 :(得分:3)
您应检查每个位(例如,如果k = 3,您需要检查所有3位)是否存在2 ^ k-1次为0& 1。
如果您确定所列出的列表的不变量(只有一个数字丢失并且没有重复) - 确保它始终保持 - 那么您只需检查一个,任意位保持上面列出的条件
例如,假设不变量成立,k = 3,你有列表[0-7],不包括6。 对于列表中的每个数字,获取其第一位(最不重要)并执行以下操作:
if bit value = 0 then zeroValues++;
if bit value = 1 then oneValues++;
zeroValues
应该等于oneValues
,两者都应该等于2^k-1
,在这种情况下为4。
修改:重新阅读您的问题,您正在寻找整个号码。为了找到您要查找的整个整数值,只需执行所有位的过程。对于每个位,您将找到0值或1个值丢失。缺失值是结果整数中的位值。对所有位执行此操作将找到整数的整个位表示。
答案 2 :(得分:1)
有关完全不同方法的提示,您可以对数组进行排序吗?