[Leetcode]Top K问题总结
问题:
找第 K 大的数
- 在一个数组里
- 在数据流中
找最大的 K 个数
- 在一个数组里
- 在数据流中
找出现频率最高的 K 个数
- 在一个数组中
- 在数据流中
- 在文件中
这种题适合各种follow up
核实问题:
是否需要精确的结果?
数据是离线的(文件形式计算一次得到一个结果)还是在线的(数据流可无限次查询实时结果)?
- -
问题1 - 找第 K 大的数:
- 在一个整数数组中,找第 K 大的数 [Leetcode题目]
解法1: 快排整个数组 O(nlogn)
解法2: 快选第K大 O(n) + 快排前k项 O(klogk) = O(n + klogk)
- 在一个数据流中,找第 K 大的数 [Leetcode题目]
解法: 最小堆,最小堆的堆顶就是第 K 大的数,插入O(lgk), 查询O(1)
- -
问题2 - 找最大的 K 个数:
- 在一个整数数组中,找最大的 K 个数
解法:同问题1.1解答
- 在一个数据流中,找最大 K 个数
解法: 同问题1.2解答,插入O(lgk), 如果查询不需要保持顺序,则O(n),可以用java的iterator实现;如果查询需要保持顺序,则先无序的拿出,然后排序,即O(klgk)
问题3 - 找最高频的 K 个数
Leetcode题解
刷题心得,记录
361 声望
98 粉丝
推荐阅读
手把手教你写一份优质的前端技术简历
不知不觉一年一度的秋招又来了,你收获了哪些大厂的面试邀约,又拿了多少offer呢?你身边是不是有挺多人技术比你差,但是却拿到了很多大厂的offer呢?其实,要想面试拿offer,首先要过得了简历那一关。如果一份简...
tonychen赞 153阅读 18k评论 5
SegmentFault 思否面试闯关挑战赛!
“金三银四”求职季到啦,能力自查与提升迫在眉睫🔥 社区专栏与技术问答联合推出: SegmentFault 思否面试闯关挑战赛 本期挑战赛于 3 月 7 日 正式开赛,共设四重关卡,不限技术方向。快来和小伙伴们一起主动追击,...
SegmentFault思否赞 14阅读 11.4k评论 16
万字长文剖析ChatGPT
简单来说,ChatGPT 是自然语言处理(NLP)和强化学习(RL)的一次成功结合,考虑到读者可能只熟悉其中一个方向或者两个方向都不太熟悉,本文会将 ChatGPT 涉及到的所有知识点尽可能通俗易懂的方式展现出来,有基...
xiangzhihong赞 15阅读 1.7k
疫情已过,2023 我的前端面试记录
顺利入职。把我最近找工作的心得记录下来。工作交接确定 lastday整理手头工作,相关对接人、交接人放文档中工作交接过渡阶段。做好被咨询者,该拉人拉人,该拉群拉群平时沟通顺畅的同事如果没有 WX 可以加一个属...
linong赞 11阅读 546
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...
白鲸鱼赞 9阅读 5.4k
如何写一个让面试官满意的 Generator 执行器?
例子都可以在 Console 中运行的(谷歌版本 76.0.3809.100),都是以最新浏览器支持的 JavaScript 特性来编写的,不考虑兼容性。
Samon赞 12阅读 3.8k
vue面试题
2、Vue的生命周期Vue 的生命周期可以分为8个阶段:创建前后、挂载前后、更新前后、销毁前后,以及一些特殊场景的生命周期。Vue 3 中还新增了是3个用于调试和服务端渲染的场景。
墨城赞 5阅读 428
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。