Chinaunix首页 | 论坛 | 博客

分类:

2010-10-07 19:38:44

题目:

   给出
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效率高些。
阅读(1017) | 评论(0) | 转发(0) |
0

上一篇:背包问题

下一篇:囚犯问题集

给主人留下些什么吧!~~