锁定老帖子 主题:一道阿里电话面试中的算法题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-20
O(n)是最优解 不可能O(lgn) 你至少要遍历数组一遍才知道哪个值出现得最多...
|
|
返回顶楼 | |
发表时间:2011-08-24
最后修改:2011-08-24
一般思路: 构建一棵带权的二叉树, 权值就是它出现的次数, 这样需要 N(输入数量)*logN(平均搜索时间) 的时间, 构建完成用 O(N)时间遍历二叉树可以知道出现次数最多的元素.
|
|
返回顶楼 | |
发表时间:2011-08-25
最好使用并行算法,分段计算,再汇总结果。
类似map-reduce算法。 |
|
返回顶楼 | |
发表时间:2011-09-09
思路如下:
排序 循环,获取第一个元素的lastindex-index,然后用对象(该对象2个属性,1个个数,1个是元素值),存上,接着上1步,如果这次的lastindex-index大于上1次的则替换掉对象原先的属性,然后继续循环1直到头 最后输出该对象的属性 |
|
返回顶楼 | |