LeetCodeDay57 —— 数组中的第K个最大元素★☆

215. 数组中的第K个最大元素

描述
  • 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
示例
示例 1:
  输入: [3,2,1,5,6,4] 和 k = 2
  输出: 5
示例 2:
  输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
  输出: 4
说明:
  你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。
思路
  1. 利用STL中的优先队列构建最小堆,每次遍历与堆顶元素比较,较大则更新堆中元素,最后堆顶元素即为所求。
  2. 注意优先队列的定义为template< class T, class Container = std::vector<T>, class Compare = std::less<typename Container::value_type> > class priority_queue;
  3. 默认为最大堆,最小堆定义为 priority_queue<int, vector<int>, greater<int>> minHeap;
class Solution_215 {
 public:
  int findKthLargest(vector<int>& nums, int k) {
    priority_queue<int, vector<int>, greater<int>> minHeap;
    for (auto num : nums) {
      if (minHeap.size() < k) {
        minHeap.push(num);
      } else if (num > minHeap.top()) {
        minHeap.pop();
        minHeap.push(num);
      }
    }
    return minHeap.top();
  }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,698评论 8 265
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,119评论 19 139
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,057评论 2 11
  • 近日,到医院探病,认识一可怜女子。高大漂亮,原是沪某著名日资企业部门主管,响当当的一个人物,家庭美满,孝顺父母...
    章海萍阅读 370评论 0 0
  • 今天早上和大小宝一起看了《魔法奇缘》的动画片。我说我觉得长发公主真的很棒,动画片里面的每一个人都有梦想,并且为着梦...
    阿乐的后花园阅读 229评论 0 0