论坛首页 Java企业应用论坛

一道阿里电话面试中的算法题

浏览 46067 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-20  
O(n)是最优解 不可能O(lgn) 你至少要遍历数组一遍才知道哪个值出现得最多...
0 请登录后投票
   发表时间:2011-08-24   最后修改:2011-08-24
一般思路: 构建一棵带权的二叉树, 权值就是它出现的次数, 这样需要 N(输入数量)*logN(平均搜索时间) 的时间, 构建完成用 O(N)时间遍历二叉树可以知道出现次数最多的元素.

0 请登录后投票
   发表时间:2011-08-25  
最好使用并行算法,分段计算,再汇总结果。
类似map-reduce算法。
0 请登录后投票
   发表时间:2011-09-09  
思路如下:
排序
循环,获取第一个元素的lastindex-index,然后用对象(该对象2个属性,1个个数,1个是元素值),存上,接着上1步,如果这次的lastindex-index大于上1次的则替换掉对象原先的属性,然后继续循环1直到头
最后输出该对象的属性
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics