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

2015-07-10 22:02:34 +08:00
 ning1022

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

11900 次点击
所在节点    PHP
119 条回复
proudzhu
2015-07-11 09:33:48 +08:00
53 不就在这个数组里吗,一眼就能看出来,实在要写就来个 return array[3] == 53
yuankui
2015-07-11 10:32:21 +08:00
需求不明,你可以反问面试官几句
一帮助您正确理解题意
kn007
2015-07-11 11:00:02 +08:00
不可能没有遍历。。。看到有人说递归。。。递归不也是遍历。。。$i++。。
ant_sz
2015-07-11 11:50:31 +08:00
我觉得蒙特卡洛算法正解。

虽然这个算法的期望时间复杂度很高,但是来保证一定可以判断某个数字是否在array里。比如说我们把每次随机生成的下标保存在HashSet里,如果某次随机生成的下标已经在集合里我们就抛弃他。这样经过足够长的时间我们总能100%的确定53是不是在array里。(当集合size和array 的 size 相同的时候结束算法)。
ant106
2015-07-11 11:59:39 +08:00
搞不懂什么目的?

var a = [1, 2, 3, 4, 5, 6, 7];
console.log((',' + a.toString() + ',').indexOf(',3,') > 0);

转成字符串 用indexOf 算内部函数?
WispZhan
2015-07-11 12:48:00 +08:00
要求不遍历,就是二分查找了。二分查找 只有最差的情况才是遍历
排序 已经 遍历了。不遍历根本不能那个排序
best1a
2015-07-11 13:40:48 +08:00
@ant_sz +1 上面说的递归和字符串啥的,其实都算遍历的一种了
weyou
2015-07-11 13:47:20 +08:00
不让遍历无解, 那是魔术师干的事情。
weyou
2015-07-11 13:48:53 +08:00
就算是人工一眼看出53在里面, 也包含了目光的遍历。
tushiner
2015-07-11 13:58:38 +08:00
@proudzhu 大亮!
killerv
2015-07-11 14:19:29 +08:00
感觉这个比较问题扯啊,明明是个简单的问题非要复杂化。
sirgod
2015-07-11 14:23:50 +08:00
注意到53是素数所以全部乘起来再模53看是否等于0就好了
myywin
2015-07-11 14:25:20 +08:00
排序,二分?
laoyuan
2015-07-11 14:26:04 +08:00
@sirgod 终于出现正确答案了。
013231
2015-07-11 14:34:17 +08:00
@sirgod
@laoyuan
你们打算怎样把数组全部乘起来?
VicYu
2015-07-11 14:40:29 +08:00
53素数,全乘,摸53,判断是否为0
jimiton
2015-07-11 14:40:42 +08:00
@sirgod
全部乘起来,不是得遍历一遍,取出数字相乘么?
相比较遍历一遍,取数比较,有什么优势
znoodl
2015-07-11 14:43:48 +08:00
@sirgod
@laoyuan
本来遍历到一半就能确认的问题,非要遍历一遍算积再除
sketch33
2015-07-11 14:45:28 +08:00
笑死人了,还tm正确答案,真不知道是不是高级黑……
sketch33
2015-07-11 14:47:17 +08:00
这个肯定要遍历的啊,就算完全不懂编程好了,假设里面100个元素,使用某种手段访问了其中99个,发现没找到这个数字,那么剩下那个数字你是访问呢还是不访问呢

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

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

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

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

© 2021 V2EX