LeetCode 题解(2):排序
learn from cyc2018 and LeetCode
利用随机化快速排序的 RANDOMIZED_PARTITION 求解 Kth Element 问题。参考材料:CLRS笔记:快速排序
225. Kth Largest Element in an Array (medium)
问题描述
找出数组中第 $k$ 大元素
1 | // example |
题解
参照 CLRS笔记:快速排序 可以得到如下解:
1 | class Solution { |
相关问题
347. Top K Frequent Elements (medium)
414. Third Maximum Number (easy)
703. Kth Largest Element in a Stream (easy)
973. K Closest Points to Origin (medium)
347. Top K Frequent Elements (medium)
问题描述
寻找数组中出现频率第 $k$ 高的数字。
1 | // example |
题解
比较简单的想法是,先用一个 map 存储每个数字以及其出现的频率,将其频率作为一个数组投入上题中获得第 $k$ 大元素。遍历整个 map 将值大于第 $k$ 大元素的键加入结果中。核心代码如下:
1 | class Solution { |
但是结果出现问题:

时间复杂度与空间复杂度均较高。
参考 Solution 中利用堆来解决这一问题:

有时间可以试着实现一下 C++ 版本,看一下时间与空间结果。
相关问题
225. Kth Largest Element in an Array (medium)
451. Sort Characters By Frequency (medium)
659. Split Array into Consecutive Subsequences (medium)