两道数组算法题,面试中遇到过但没在网上找到答案,求解
泻药
第一题就是hashmap统计,然后按频率排序,具体做法可以是把hashmap的kv对弄成一个列表,然后按v排序再把k还原成原列表
【两道数组算法题,面试中遇到过但没在网上找到答案,求解】 第二题就是把数组切成两份,一共有N+1种切法,对于每种切法,分别找左半部分最大/最小子数组和和右半部分最大/最小子数组和,统计差值最大的就行了
■网友
第二题先从左到右扫一遍,求出从开始到每个位置的最大(最小)和,然后再从右到左扫一遍,求出从后面到每个位置的最大(最小)和,在从右到左扫的时候就可以求出结果了。时间复杂度为O(n)。
■网友
楼上写得很清楚了,不过第一个问题还可以优化一下。如果直接对频率排序的话,时间复杂度是nlogn,但是这里可以优化到线性。开一个n+1的数组,每个数组元素是一个list,数组下标表示出现的次数。hashmap统计结束以后,把结果保存在这个数组里面,然后倒序遍历即可。这其实是一个线性复杂度的排序,应该是叫桶排序?忘了TAT
■网友
第一题可以用hashmap 统计然后value作为index ,key 作为val存入一个数组,再便利一遍数组即可
推荐阅读
- C语言 指针引用数组的地址问题
- 为啥这个算法误差的看起来这么小
- 使用算法帮助人们筛选reader的信息是否存在可能
- 请问如果想成为算法工程师的话,大学选专业是选软件工程好还是计算机科学与技术好。
- 神经网络算法是否真的属于人工智能范畴
- 以算法为例,是否存在讲解者认为“懂得自然懂了,不懂的我说再多也白搭”的心理
- 豆瓣FM的推荐算法还有哪些可以改进的地方
- 如果已确定图像中物体的位置, 常用的目标分割和提取算法有哪些
- C语言多维数组声明调用和c为啥差别这么大
- 请问只靠优化软件可以提高手机信号质量吗就是说不改变基带芯片和天线设计,信号质量可以靠算法优化吗
