文艺做法:     设缺失的数为x和y,将原数组和数组{1,2,3,....,n,n+1,n+2}合并,得到一个长度为2n+2的数组Array。 求得Array[ 0 ]^Array[ 1 ]^...&Array[ 2n+1 ]的值V,则V=x^y。由于x!=y ,V肯定不为0。     随便选择一个二的次幂值m,使得V&m>0,比如V=0001001(2) ,则m可取1,8。     将Array中的元素分成2个数组,分组的依据为Array[ 1 ]&m>0及Array[ 1 ]&m=0。此种分法,必然将x和y分到2个数组中,且两个数组除x和y之外,其它的数组都是成对出现的。     将2个数组分别取异或(计算方式同于计算Array的值V),得到2个值,即为x和y。 2B做法:        定义一个长度为n+2的bool数组,对于数组的每个值,将bool中对应位置设为true,然后找到2个false的下标。 结论:         此题存在纰漏,而防止2B做法出现的方法应该是提供2个数组,第2个数组比第一个少了2个元素,设计算法找出少的2个元素。
点赞 4

相关推荐

头像
不愿透露姓名的神秘牛友
04-22 15:05
点赞 评论 收藏
转发
牛客网
牛客企业服务