社区
Java
帖子详情
一道java面试题,求大牛解答
sandy刘
2019-01-24 01:00:33
给你5000万个int,求出前1000个最大的数,怎么做,并给出其时间复杂度和空间复杂度
...全文
471
5
打赏
收藏
一道java面试题,求大牛解答
给你5000万个int,求出前1000个最大的数,怎么做,并给出其时间复杂度和空间复杂度
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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企业在面试时都喜欢问一些智力相关的题目,虽然智力
面试题
在面试笔试中占的比例不大,但很多时候,面试环节中智力题往往会成为我们拿offer的最大拦路虎。因为有些面试官认为通过智力题可以考查你的思维能力、抽象问题的能力。下面是
一道
很经典的智力型
面试题
,是一位
Java
老师的朋友去BAT面试中亲身见识过的
一道
题。各位来体验一下,看看自己的大脑是不是好...
牛客网
Java
开发高频
面试题
,难道
Java
真的凉了
1.HashMap 的内部结构?内部原理?和 HashTable 的区别,假如发⽣了 hash 碰撞,如何设计能让遍历效率⾼?2.讲一讲讲讲 ConcurrentHashMap吧。3.讲一下JVM虚拟机内存结构,以及它们的作⽤。4.讲讲JVM的类加载过程&&双亲委派模型。5.谈谈
Java
的垃圾回收算法。6.谈谈
Java
垃圾回收的触发条件。7.synchronized和Lock的区别。8.volatile的作⽤,为什么会出现变量读取不⼀致的情况,与 synchronized 的区别?
火爆知乎的
Java
面试题
-如何系统全面性学习
Java
语言?不可思议!
前言 Spring如何解决的循环依赖,是近两年流行起来的
一道
Java
面试题
。其实笔者本人对这类框架源码题还是持一定的怀疑态度的。如果笔者作为面试官,可能会问一些诸如“如果注入的属性为null,你会从哪几个方向去排查”这些场景题。那么既然写了这篇文章,闲话少说,发车看看Spring是如何解决的循环依赖,以及带大家看清循环依赖的本质是什么。 天下码农,多为CV!你是否每天还在增删改查?性能优化让你手足无措?看这里!技术大牛带你分分钟完爆性能优化!!!
Java
性能权威指南+淘宝千万并发性能优化实战!理论结合实
牛客网高质量
面试题
,2025 春招
Java
面试避坑指南
目前大三,本科就读于电子科技大学。我在大一进入学校实验室学习,负责数据收集、日常开发、NLP。用到的技术包括:语言:
Java
、Python技术:爬虫:协程、异步 OI、正则表达式后端:SpringBoot、MyBatis、MySQL 前端:HTML、CSS、
Java
Script、BootStrap 深度学习:Pytorch、Keras在实验室接触的比较广泛,不过感觉不够深入,于是在大二下开始深入后端技术。
Java
高级工程师必备知识!2021
Java
高级
面试题
汇总
解答
一道
面试题
让我们开门见山,直面主题:Dubbo 服务里面有个服务端,还有个消费端你知道吧? 服务端和消费端都各有一个线程池你知道吧? 那么
面试题
来了:一般情况下,服务提供者比服务消费者多吧。一个服务消费方可能会并发调用多个服务提供者,每个用户线程发送请求后,会进行超时时间内的等待。多个服务提供者可能同时做完业务,然后返回,服务消费方的线程池会收到多个响应对象。这个时候要考虑一个问题,如何将线程池里面的每个响应对象传递给相应等待的用户线程,且不出错呢? 说到博客,大家会不由自主的地想到博客园,CSDN,Gi
Java
51,408
社区成员
85,974
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章