php - 求教一道简单的算法题~
PHPz
PHPz 2017-04-11 10:34:00
[PHP讨论组]

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

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

大神求教~

PHPz
PHPz

学习是最好的投资!

全部回复(11)
天蓬老师

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

PHPz

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

黄舟

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

PHPz

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

高洛峰

桶排序,O(n)的时间

天蓬老师

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

PHP中文网

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

大家讲道理

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

ringa_lee

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

ringa_lee

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

array_diff(range(1,100),$arr);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号