leetcode做题笔记215. 数组中的第K个最大元素

这篇具有很好参考价值的文章主要介绍了leetcode做题笔记215. 数组中的第K个最大元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4

思路一:优先队列

c++解法

class Solution {
public:
  int findKthLargest(vector<int>& nums, int k) {
    if (k <= 0 || k > nums.size() || nums.empty()) {
      return 0;
    }
    priority_queue<int, vector<int>, greater<int>> que;
    for (int i = 0; i < nums.size(); i++) {
      que.push(nums[i]);
      if (que.size() == k+1) {
          que.pop();
      }
    }
    return que.top();
  }
};

分析: 

本题要求第k大的元素,利用优先队列可以不断维护排序好的数组,最后直接返回第k大的元素

总结:

本题考察对优先队列的利用,这里采用编写好的优先队列方法,将数组内数直接放入队列中进行排序文章来源地址https://www.toymoban.com/news/detail-744362.html

到了这里,关于leetcode做题笔记215. 数组中的第K个最大元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    给定整数数组 nums 和整数 k ,请返回数组中第 **k** 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 示例 2: 提示: 1 = k = nums.length = 105 -104 = nums[i] = 104 解答

    2024年02月11日
    浏览(41)
  • 面试热题(数组中的第K个最大元素)

    给定整数数组  nums  和整数  k ,请返回数组中第  k  个最大的元素。 请注意,你需要找的是数组排序后的第  k  个最大的元素,而不是第  k  个不同的元素。        提到数组中最大元素,我们往往想到就是先给数组进行排序,然后取最大值,现在我们按照这个思路写一

    2024年02月13日
    浏览(54)
  • leetcode做题笔记124. 二叉树中的最大路径和

    二叉树中的  路径  被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中  至多出现一次  。该路径  至少包含一个  节点,且不一定经过根节点。 路径和  是路径中各节点值的总和。 给你一个二叉树的根节点  root  ,返回其  最

    2024年02月10日
    浏览(49)
  • leetcode: 2789. 合并数组中的最大元素

    给你一个下标从 0 开始、由正整数组成的数组  nums  。 你可以在数组上执行下述操作 任意 次: 选中一个同时满足  0 = i nums.length - 1  和  nums[i] = nums[i + 1]  的整数  i  。将元素  nums[i + 1]  替换为  nums[i] + nums[i + 1]  ,并从数组中删除元素  nums[i]  。 返回你可以从最

    2024年03月14日
    浏览(38)
  • leetcode做题笔记83删除排序链表中的重复元素

    给定一个已排序的链表的头  head  ,  删除所有重复的元素,使每个元素只出现一次  。返回  已排序的链表  。   本题与上题相似,但非将所有重复的元素删除,而是将多的重复元素删除,可添加判断语句判断前一个与后一个val值是否相等来决定是否放入链表中,最后输

    2024年02月12日
    浏览(38)
  • leetcode做题笔记82删除排序链表中的重复元素 II

    给定一个已排序的链表的头  head  ,  删除原始链表中所有重复数字的节点,只留下不同的数字  。返回  已排序的链表  。 本题将重复的元素全部删除,可以考虑新建一个链表,若有重复元素则不放入新链表中,最后输出新链表即可。链表操作需要用另一个链表记录原来

    2024年02月12日
    浏览(59)
  • leetcode做题笔记80删除有序数组中的重复项 II

    给你一个有序数组  nums  ,请你  原地  删除重复出现的元素,使得出现次数超过两次的元素 只出现两次  ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在  原地 修改输入数组  并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输

    2024年02月12日
    浏览(52)
  • leetcode 215.数组中第k大的元素

    🌟 leetcode链接:数组中第k大的元素 思路: 使用堆数据结构,大堆的堆顶是堆内最大的元素,也就是把当前堆 pop k - 1 次,第 k 次 top 出来的元素就是第 k 大的数。 代码:

    2024年02月09日
    浏览(54)
  • leetcode做题笔记104. 二叉树的最大深度

    给定一个二叉树  root  ,返回其最大深度。 二叉树的  最大深度  是指从根节点到最远叶子节点的最长路径上的节点数。 本题要求二叉树的最大深度,可想到将左子树深度和右子树深度分别记录下来,最后比较左右子树深度输出最大深度 本题考察二叉树的应用,将左右子树

    2024年02月11日
    浏览(49)
  • LeetCode 34 在排序数组中查找元素的第一个和最后一个位置

    在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums ,和一个目标值 target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target ,返回 [-1, -1] 。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包