腾讯面试题求助

腾讯面试其中两道算法题没想明白,求大神指导,1~找出数组中比左边大比右边小的所有数,2~对于大量数组,找出出现最多的数,感觉很简单可是我太笨了。。。。。并没有说数组范围,提供思路说是可以多台电脑处理,满脑子问号。。。。#腾讯#
全部评论
第二题多机方法:如果现在有n台机器,先遍历数组,对每个元素进行hash运算,得到hash值;用该hash值对n取模作为要存储该数据的机器编号;这样做可以保证相同的数都会存到同一台机器(相同数字hash值也相同)。之后统计得到每台机器中次数最多的数字。最后将n台机器的结果进行排序,就可以要到出现次数最多的数字。
点赞 回复 分享
发布于 2019-04-23 03:37
第一题: 用dp1[]数组记录从0到当前位置的最大值,从左到右。 用dp2[]数组记录从尾部到当前位置的最小值,从右到左。 对于数组中任意的位置i,如果nums[i] > dp1[i] && nums[i] < dp2[i],那么就输出nums[i]。
点赞 回复 分享
发布于 2019-04-22 23:25
第二题多台电脑,其实就是分步统计,然后合并
点赞 回复 分享
发布于 2019-04-22 23:56
第二题有没有限定数的范围,比如1-100这样的
点赞 回复 分享
发布于 2019-04-22 23:33
第一题是比左边的第一个数小还是比左边所有数都小?
点赞 回复 分享
发布于 2019-04-22 23:20
第二题的话直接用一个哈希表记录每个数出现的次数就好
点赞 回复 分享
发布于 2019-04-22 23:19

相关推荐

评论
点赞
25
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务