求python大牛帮看看这道简单的算法题如何巧解,python大牛,1、一个数组 a[99]


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

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

大神求教~

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

可以参考下我写的文章 http://www.cnblogs.com/zichi/...

桶排序,O(n)的时间

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

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

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

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

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

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来查找

编橙之家文章,

评论关闭