剑指Offer II 076. 数组中的第 k 大的数字
给定整数数组nums
和整数k
,请返回数组中第k
个最大的元素。
请注意,你需要找的是数组排序后的第k
个最大的元素,而不是第k
个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2 |
示例 2:
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 |
提示:
1 <= k <= nums.length <= 104
104 <= nums[i] <= 104
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/xx4gT2 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
求一个数列中的第k
大的数,将前k
个数建小顶堆,后面若比堆顶元素还小,则舍去,否则将堆顶置换成该元素,然后维护堆,最后输出堆顶元素。
class Solution { |
复杂度
- 时间复杂度:
。 - 空间复杂度:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿日哥的向量空间!