给出1..n的一个排列,其中缺少2个元素,用O(1)的空间找到那2个缺失的元素

题目:

   给出
1..n的一个排列,其中缺少2个元素,用O(1)的空间找到那2个缺失的元素。即你手头有n-2个数,乱序的,
它们是从
1......nn个数中选出来的,这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效率高些。
如果是少3个怎么解决呢?(腾讯面试)

版权声明:本文为ray_zhang_3原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。