+ -
当前位置:首页 → 问答吧 → 传说中的面试算法题来拉, 大牛们看看

传说中的面试算法题来拉, 大牛们看看

时间:2010-07-19

来源:互联网

有1 ~ n+1 一组数, 将其中的N个数乱序放入a[n]数组中(有一个数没有放进去)
问题来了: 如何能多快好省的从1 ~ n+1 个数中找到没有放入a[n]数组的那个数

我的做法, 先排序,然后挨个找, 听人家口气应该是有更牛x的算法, 各位大牛帮帮忙想想阿。

作者: mgqw   发布时间: 2010-07-19

不越界的话,用减法

作者: phy0077   发布时间: 2010-07-19

如果这些数不是重复的到很好做。。。如果有重复的就不晓得怎么做了。。。不重复的话。。直接把原来的数和数组里面的数异或就可以了

作者: xiboboy   发布时间: 2010-07-19

回复 xiboboy


    不重复的

作者: mgqw   发布时间: 2010-07-19

本帖最后由 mgqw 于 2010-07-19 17:18 编辑

回复 phy0077


    一边加, 一边减?  最后的值就是那个没有放进去的数了   
    好方法阿

作者: mgqw   发布时间: 2010-07-19

  1.         int a[6] = {1, 2, 3, 4, 5, 6};
  2.         int b[5] = {1, 2, 3, 4, 5};

  3.         int a_ = a[0];
  4.         for(int i = 1; i< 6; i++)
  5.         {
  6.                 a_^=a[i];
  7.         }


  8.         int b_ = b[0];
  9.         for(int k = 1; k< 5; k++)
  10.         {
  11.                 b_^=b[k];
  12.         }

  13.         cout<<(a_ ^b_)<<endl;
复制代码

作者: xiboboy   发布时间: 2010-07-19

回复 xiboboy


    能说明一下理由吗, 大牛

作者: mgqw   发布时间: 2010-07-19

大牛到不是了。我菜鸟。。2个相同的数异或 就等于 0了哈。。。

作者: xiboboy   发布时间: 2010-07-19

回复 xiboboy


    这个算法是最牛的

作者: mgqw   发布时间: 2010-07-19

回复 xiboboy


    最基础的效率也是最高的

作者: bitterness   发布时间: 2010-07-19

《算法艺术和信息学竞赛》讲二分搜索的经典题……

作者: starwing83   发布时间: 2010-07-19