分类:
2010-10-07 19:38:44
题目:
给出1..n的一个排列,其中缺少2个元素,用O(1)的空间找到那2个缺失的元素。即你手头有n-2个数,乱序的,
它们是从1......n这n个数中选出来的,这n-2个数各自不相等,如何用O(1)的空间找到那两个元素。
解答:
假设缺的那两个数为A和B,
第一步:求出A + B = M;
第二步:求出A * B = N;
第三步:根据第一步和第二步求出A,B。
可能第二步中的A * B太大了会导致溢出,所以可以考虑求出A ^ 2 + B ^ 2 = N。
相似题目:
也是给出1..n个数,但是其中缺一个元素,找出那个元素。可以用求和然后减法来做,也可以用xor来做,
显然用xor效率高些。