回 帖 发 新 帖 刷新版面

主题:两道JAVA笔试题

面试有两道笔试题没写出来,请多多各位帮帮忙
题目一:一个数组,“支配者”是在数组中出现频率超过一半的整数, 例如[3,4,3,2,-1,3,3,3]数值“3”出现过5次,5除以8大于0.5 所以数值“3”是一个支配者; 而在这个数组中的支配者出现在数组下标[0,2,4,6,7]
写一个函数,在给定的整数数组中找出支配者所在的任意一个数组下标,如果一个数组中没有支配者返回-1。

题目二:“有序数组中绝对值不同的数的个数”指的是,一个已经排好序的整数数组中,绝对值不相同的数字的个数。例如:[-5,-3,-1,0,3,6].请返回给定有序数组中绝对值不同的数的个数。


第一道题我当时用map做,第二道题用set做,都做出来了,但是考官要求不能用JAVA的类库,并且要尽可能降低时间复杂度,在规定的时间内没想出一个好办法,笔试也就没通过了,所以请教一下大家怎么样才能做出来?

谢谢各位!

回复列表 (共1个回复)

沙发

第一题 如[3,4,3,2,-1,3,3,3] 把原数组复制一个数组b,并排序,得[-1,2,3,3,3,3,3,4]
然后挨个分析就可以得出支配者,再在原数组中搜索位置即可。
第二题 把负数都转化为正数并排序,和第一题差不多。

我来回复

您尚未登录,请登录后再回复。点此登录或注册