Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217448
  • 博文数量: 40
  • 博客积分: 2512
  • 博客等级: 大尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-24 10:23
文章存档

2014年(1)

2011年(4)

2010年(35)

分类:

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

上一篇:背包问题

下一篇:囚犯问题集

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