求教一道简单的算法题~

1、一个数组 a[99] ,里面有1-100中的99个不重复的整数,让你找出没有的那1个。

2、一个数组 a[99] ,里面有1-100中的98个不重复的整数,让你找出没有的那2个。

大神求教~

阅读 6.3k
12 个回答

bit vector思想,O(n)时间复杂度

第一题用5050减去数组所有元素的和即为缺少的元素
第二题创建一个新数组b[99],遍历一遍原数组,b[a[i]] ++,最后遍历一遍b,为0的就是缺少的数字

新手上路,请多包涵

a.都可以通过给数组排序然后通过循环找出
b.第一题可以用5050-数组中元素的和得到答案

新手上路,请多包涵

把数组遍历相加的和和1-100之和相减不就能得到么

桶排序,O(n)的时间

先排序生成,然后让i和 list[i] 比较,i++.

生成一个1-100的数组,然后与给定的数组a[99],然后求一下两者的差集就OK了

1.使用map<Integer,Integer>先导进数据map.put(1,0),map.put(2,0),map.put(3,0)到100
2.循环随机生成99个不重复的1-100的数字i并修改map数据map.put(i,1)
3.遍历map,键值为0的数则为需要找出的数字

两道题通用,使用map来查找

a=a[99]
print [x-1 for x in a if (x-1) not in a and (x-1)!=0]
间隔的数都找出来

获取那99个整数,再和那个100个整数 array_diff一下不就行了

php中假设给定的数组是$arr

array_diff(range(1,100),$arr);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题