×

Loading...

Topic

This topic has been archived. It cannot be replied.
  • 枫下拾英 / 心情随笔 / 我也来道微软试题。一个数组长度99, 由1-100中的99个数字组成。请给出一个最快算法,用尽可能少的内存,算出不在数组中的数字。
    • 把数组从头到尾走一遍,把1放到数组第1个,2放到数组第2个。。如果有相同的把第二个开始变成0。再走一遍找出0的位置。
      • 只用REGISTER行不行?所有的数加起来,再和5050减一下,就是它了。
        • 题目没有说只少一个数。
    • 计算(1+2+3+...+98+99+100)-(a[0]+a[1]+a[2]+...+a[97]+a[98]+a[99])就可以算出来。前面一部分可以直接用常数。
      • we are the same. // hand
    • 对数组从尾到头做冒泡排序,后面的比前面的小就交换,相等就将其置成100。最终结果是存在的n个数放在前面连续的项里,后面跟(99-n)个100。然后定义一个初值1步长1的比较器,从头开始比较,与数组项不等就输出,相等就比较下一个项。