avatar
a*r
1
面的是Relevance algorithm engineer职位,两题,烙印面试官,估计挂了。
第一题,是给定array of int,A, 均匀分布到n个buckets,每个buckets里面的数目
是多少。基本就是bucket sort,思路比较容易,找出max 和min, 然后分割为n个
buckets,统计每个bucket里面个数。
第二题,是第一题的一个延伸,问如果每个buckets的上下届是给定的,怎么来求每个
buckets里面的count的。
例如,array A is
1, 200, 52, 2, 4, 1003
bucket的范围为,
1---100
101-- 1000
1001--2000
那么就等价于给你一个range vector, 表示每个bucket的下界, i.e. {1, 101, 1001}
问此时怎么求每个bucket里面元素的个数。
我当时的想法是,对每个array 里面的number,做binary search找出它属于那个
bucket,然后count,然后感觉是不是要sort array,会有帮助,讨论了一会儿,只是
意识到sort array可以把下次binary search的范围缩小。还没有来得及深入想,时间
就不够了,于是只写了这个binary search子程序。 不知道大家有什么好的想法没有?
面试完我想了想,如果range vector数目比较小的话,可以先sort input array A,然
后可以用bucket下界来在这个array A 里面binary search 这个bucket上下界的范围,
找出相应的属于这个bucket的元素的范围,由index来算bucket里面的数目,也不知道
靠谱不靠谱。
avatar
b*k
2
感觉第二个方法更靠谱些
avatar
r*h
3
不需要sort array吧,对bucket做binary search,复杂度只要nlogx, x= number of
buckets
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。