原题:1~100共一百个自然数,放入一个99个元素的数组a[99],要求写出一个尽量
简单的方案,找出没有被放入数组的这个数

讨论:

呵呵,
拿到题后,第一种解法,做一个2重循环,那么,复杂度就是n*n,肯定不能过关;
想到的第二种解法是利用一个辅助数组b(100),循环原数组一遍,对b赋值(b[a[i]] = 1),那么,b中不是1的元素的下标(位置)就是需要找的数字:
for( i=1; i<=99, i++)
b[a[i]] = 1;
for( i=1; i<=100; i++)
if(b[i]) != 1)
return i;
平均复杂度为n+n/2, 如果是C语言,初始化b数组需要n次赋值,复杂度为2n+n/2.

使用数学方法,确实没有想到,呵呵...

----------------

关于笔试题的评论

一次和朋友闲聊的时候说起这道题,
朋友是搞开发的,埋头想了半天,也没什么简单的算法;
刚上中学的表弟见了,撇撇嘴,说:不就是1~100的和减去数组中所有元素的和嘛!

相关文章:

  • 2022-01-03
  • 2021-07-28
  • 2021-09-17
  • 2021-06-20
  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-04-07
猜你喜欢
  • 2021-12-05
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2021-06-03
  • 2022-12-23
  • 2021-12-06
相关资源
相似解决方案