社区
Java
帖子详情
一道java面试题,求大牛解答
sandy刘
2019-01-24 01:00:33
给你5000万个int,求出前1000个最大的数,怎么做,并给出其时间复杂度和空间复杂度
...全文
458
5
打赏
收藏
一道java面试题,求大牛解答
给你5000万个int,求出前1000个最大的数,怎么做,并给出其时间复杂度和空间复杂度
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
纵马饮白虹
2019-02-20
打赏
举报
回复
用链表
从数据集中读取数据构建一个有序双向链表,长度为K放到楼主的例子这里就是1000个(头结点大或者尾结点大都可以),举例时头结点大
之后遍历剩下的数据,从尾结点开始向前比较大小,不断的淘汰链表中的数据,直到遍历完一遍,剩下的就是前1000个大的数据
空间复杂度是O(n + k),
最好时间复杂度是O(n),最坏时间复杂度是O(n * k)
在楼主的例子中K=1000,空间复杂度是O(n),时间复杂度是O(n)
Soyoger
2019-01-29
打赏
举报
回复
这个问题考察的知识点比较多,通过以下几方面来思考: 1. 5000万个int,假设一个int占4个字节,4*5000万=195312.5kb 约等于190.M,一般的计算机都可以存储在内存中,如果输量再大,Kelvin不能被内存完全加载,但是目前可以完全加载; 2.被完全加载之后,可以考虑数据特性,题目给出了5000W个int,如果已经被排号序了呢?哈哈,这是极端,我们继续考虑数据没有排序,这个时候需要用排序算法进行排序,效率高的比如归并 快排 最大堆排等等,如果接触了mapreduce,归并+快排是较好的选择; 3.考虑分布式来处理,典型的mapreduce。
sandy刘
2019-01-24
打赏
举报
回复
从N个数中找出最大的K个数,通过小堆的方式,第一次构建容量为K的小堆,时间复杂度是O(K),然后从N个数中取一个和堆顶元素进行比较,如果堆顶元素小,就替换,然后再构建一下小堆,这个过程时间复杂度是O(logK),一共(N-K)次,所以,最终的时间复杂度是O(K)+(N-K)O(logK)≈O(NlogK)。我这个计算过程和最终结果对吗?
十八道胡同
2019-01-24
打赏
举报
回复
就是利用1楼说的大小堆来做。
LovelyBear2019
2019-01-24
打赏
举报
回复
100亿个数中找出最大的前K个数,我们可以遍历K次找到,但是时间复杂度就很大为 O(KN);因此,我们可以用堆来实现,只需遍历一次,思路如下:
如果要找前K个最大的数,我们用小堆,每次用堆顶元素和遍历的数比,如果堆顶元素小,则让堆顶元素的值等于它,然后向下调整
如果要找前K个最小的数,我们用大堆,每次用堆顶元素和遍历的数比,如果堆顶元素大,则让堆顶元素的值等于它,然后向下调整
随便搜了搜,把别人的复制了过来,这是一道互联网面试必问题,希望能帮助到你。
java
有意思
面试题
_
一道
有趣的
Java
面试题
一个鸡蛋从第N层及以上的楼层落下来会摔破?现在很多大型IT企业在面试时都喜欢问...下面是
一道
很经典的智力型
面试题
,是一位
Java
老师的朋友去BAT面试中亲身见识过的
一道
题。各位来体验一下,看看自己的大脑是不是好...
牛客网
Java
开发高频
面试题
,难道
Java
真的凉了
1.HashMap 的内部结构?...5.谈谈
Java
的垃圾回收算法。6.谈谈
Java
垃圾回收的触发条件。7.synchronized和Lock的区别。8.volatile的作⽤,为什么会出现变量读取不⼀致的情况,与 synchronized 的区别?
火爆知乎的
Java
面试题
-如何系统全面性学习
Java
语言?不可思议!
Spring如何解决的循环依赖,是近两年流行起来的
一道
Java
面试题
。其实笔者本人对这类框架源码题还是持一定的怀疑态度的。如果笔者作为面试官,可能会问一些诸如“如果注入的属性为null,你会从哪几个方向去排查”这些...
Java
高级工程师必备知识!2021
Java
高级
面试题
汇总
解答
一道
面试题
让我们开门见山,直面主题:Dubbo 服务里面有个服务端,还有个消费端你知道吧? 服务端和消费端都各有一个线程池你知道吧? 那么
面试题
来了:一般情况下,服务提供者比服务消费者多吧。一个服务消费方...
Java
面试题
全集(上)希望大家耐心看完了,有点长
我看到了网上流传的一个叫做《
Java
面试题
大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《
Java
面试大全》进行了全面的...
Java
51,397
社区成员
85,847
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章