当前位置: 首页 > wzjs >正文

专注宜昌网站建设建站工具

专注宜昌网站建设,建站工具,中国建设银行报名网站,工程管理咨询公司数组中的第k个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: …

数组中的第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

思路:

  • sort排序
    从大到小排序后,返回第k-1个元素。
  • 优先队列
    大堆的时间复杂度是 k ∗ l o g 2 N k * log_2N klog2N
    小堆的时间复杂度是 ( N − K ) ∗ l o g 2 K (N-K)*log_2K (NK)log2K
    当k不大时,还是与O(N)接近的。

代码:

sort排序

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {sort(nums.begin(), nums.end(), greater<int>());return nums[k - 1];}
};

大堆

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {//大堆 k * logNpriority_queue<int> pq(nums.begin(), nums.end());while (--k){pq.pop();}return pq.top();}
};

小堆

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {//小堆 (N- K)* logNpriority_queue<int, vector<int>, greater<int>> pq(nums.begin(), nums.begin() + k);for (int i = k; i < nums.size(); ++i){if (nums[i] > pq.top()){pq.pop();pq.push(nums[i]);}}return pq.top();}
};
http://www.dtcms.com/wzjs/353616.html

相关文章:

  • 大连网站建设多少钱html网页设计模板
  • wordpress自动插件下载百度关键词在线优化
  • 成都科技网站建设找哪家网站关键词优化外包
  • 北京上海网站建设公司火爆产品的推广文案
  • 手机网站模板软文营销广告案例
  • 做网站的顶部图片百度快照是干嘛的
  • 淘客做网站怎么备案广东seo推广公司
  • 延吉市建设局网站搜索引擎营销的手段包括
  • 网站建设工作都干啥郑州做网站公司排名
  • 如何创建属于自己的网页福州百度快照优化
  • 网站推广排名报价打开网站搜索
  • wordpress企业建站教程石家庄整站优化技术
  • 太阳代理ip官网免费seo软件
  • 网站建设经费预算鹤壁搜索引擎优化
  • 建设类招标代理公司网站人工在线客服
  • 购买网站空间送域名广州企业网站建设
  • 特色专业建设展示网站 湖北网站出售
  • 建立购物网站seo推广教程视频
  • 网站建设正版软件查询网站流量
  • 南阳市建网站公河南seo
  • 播州区住房和城乡建设局网站新闻头条今日新闻下载
  • 做网站的总要求上门免费网络推广软件有哪些
  • 新疆建设兵团国资委网站百度广告联盟点击一次多少钱
  • 连云港建设部网站网站更新seo
  • 规划设计网站推荐友链交换
  • 网站推广优化技巧大全怎么免费制作网站
  • 新手做站必看 手把手教你做网站抖音关键词排名优化
  • 网页设计电脑配置推荐福州seo推广服务
  • 鹿邑网站建设上海排名优化seo
  • 淮北矿业工程建设有限公司网站网络营销策划需要包括哪些内容