{1,22,56,53,34,51,77}这是一个数组,如何不用内部函数和遍历数组的方法判断出 53 在这个数组里。(面试问题)

2015 年 7 月 10 日
 ning1022

我想到了php中的in_array()函数。但是很明显不对。

13103 次点击
所在节点    PHP
119 条回复
adspe
2015 年 7 月 10 日
用查找算法?
qiayue
2015 年 7 月 10 日
用 implode 合并成逗号分隔的字符串,然后判断字符串?
任何 php 内部函数都不能用吗还是说仅仅不能用同功能的函数?
simman
2015 年 7 月 10 日
public static function inArray($item, $array) {
$flipArray = array_flip($array);
return isset($flipArray[$item]);
}

这个???
xlmo
2015 年 7 月 10 日
不用内部函数?那貌似只能一个一个去if($arr[0] == 53) 了。。
whahuzhihao
2015 年 7 月 10 日
array_flip也是内部函数啊
iyaozhen
2015 年 7 月 10 日
应该就是考查找算法吧。
dallaslu
2015 年 7 月 10 日
针对这个数组进行任何处理,都有可能进行遍历的吧!

如果不需要遍历,不如生成一个 0 到数组长度 -1 随机数,来随机读取数组内元素,每次保证不重复读取相同位置上就行了。这样有七分之一的概率不需要遍历数组。
br00k
2015 年 7 月 10 日
不遍历怎么知道??感觉这种问题怎么有点弱智啊。。。
est
2015 年 7 月 10 日
赌10元钱任何实现都用到了某种程度上的遍历。
choury
2015 年 7 月 10 日
不管用什么方法到最后都是要遍历的,至少得知道里面有那些元素吧
除非能找到一个公式可以生成这个序列,不然不可能的
lincanbin
2015 年 7 月 10 日
不让遍历的意思就是不让你逐个看这里面的东西吧。
PHP内部函数1500个都不让用,又不让看。
这是什么鬼?
mouhong
2015 年 7 月 10 日
@dallaslu 随机数生成,重复读取判断,这貌似增加复杂度了吧。数组本身无序,已经存在不需要遍历的可能性了吧。要是可接受近似解,貌似有个什么亚线性算法可以用,具体不知了
loveuqian
2015 年 7 月 10 日
@xlmo 那也是遍历啊
mouhong
2015 年 7 月 10 日
@mouhong 不过这种题感觉就是考个遍历,传说中的 FuzzBuzz 测试
solu
2015 年 7 月 10 日

我们可以用in呀
http://nikic.github.io/2012/07/27/How-to-add-new-syntactic-features-to-PHP.html

---
好吧,上面开玩笑的,也是遍历,求正确姿势
hobbyliu
2015 年 7 月 10 日
@dallaslu 此方法,不错,忘记叫什么算法了,概率性很大。
r00tt
2015 年 7 月 10 日
@hobbyliu 是蒙特卡洛么,有点这个的感觉
hobbyliu
2015 年 7 月 10 日
@leepood 不是,我记得当初的一个场景时,一个猴子为了排序3个大小不同的干果,不断的往天上抛,直到,排序正确位置,适用于少量元素排序,概率性很大。
sumhat
2015 年 7 月 10 日
$array = {1,22,56,53,34,51,77};

if (TRUE || array) {
echo '我灵光一闪,断定 53 必然在这个数组里。';
}
101
2015 年 7 月 10 日
查找算法也是要遍历的呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/204852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX