扫码关注官方订阅号
1、一个数组 a[99] ,里面有1-100中的99个不重复的整数,让你找出没有的那1个。
2、一个数组 a[99] ,里面有1-100中的98个不重复的整数,让你找出没有的那2个。
大神求教~
学习是最好的投资!
bit vector思想,O(n)时间复杂度
第一题用5050减去数组所有元素的和即为缺少的元素第二题创建一个新数组b[99],遍历一遍原数组,b[a[i]] ++,最后遍历一遍b,为0的就是缺少的数字
a.都可以通过给数组排序然后通过循环找出b.第一题可以用5050-数组中元素的和得到答案
把数组遍历相加的和和1-100之和相减不就能得到么
桶排序,O(n)的时间
获取那99个整数,再和那个100个整数 array_diff一下不就行了
先排序生成,然后让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)到1002.循环随机生成99个不重复的1-100的数字i并修改map数据map.put(i,1)3.遍历map,键值为0的数则为需要找出的数字
两道题通用,使用map来查找
php中假设给定的数组是$arr
$arr
array_diff(range(1,100),$arr);
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
bit vector思想,O(n)时间复杂度
第一题用5050减去数组所有元素的和即为缺少的元素
第二题创建一个新数组b[99],遍历一遍原数组,b[a[i]] ++,最后遍历一遍b,为0的就是缺少的数字
a.都可以通过给数组排序然后通过循环找出
b.第一题可以用5050-数组中元素的和得到答案
把数组遍历相加的和和1-100之和相减不就能得到么
桶排序,O(n)的时间
获取那99个整数,再和那个100个整数 array_diff一下不就行了
先排序生成,然后让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来查找
php中假设给定的数组是
$arr