在未排序的数组中找到第 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 ≤ 数组的长度。

分析:这种问题老师讲了很多解法,一步比一步的效率要好,这里我用了基于划分的方法,类似于快排。

class Solution {
public://根据第一个元素划分位置int partition(vector<int>&nums,int low,int high){int temp=nums[low];int p=nums[low];while(low<high){while(low<high&&nums[high]<=temp)high--;nums[low]=nums[high];while(low<high&&nums[low]>=temp)low++;nums[high]=nums[low];}nums[low]=temp;return low;}int findKthLargest(vector<int>& nums, int k) {int begin=0,end=nums.size()-1;//如果把数据从大到小排序的话,第k大元素就是第k-1位置的元素。//当k-1<position的话,就去划分位置的左边去找;如果k-1>position的话去划分位置的右边去找;相等的话直接返回。while(1){int position=partition(nums,begin,end);if(k-1==position)return nums[position];else if(k-1<position) end=position-1;else begin=position+1;}}
};

转载于:https://www.cnblogs.com/zfc888/p/10172336.html

DC-leetcode215数组中的第k大元素相关推荐

  1. 【算法】快速选择算法 ( 数组中找第 K 大元素 )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  2. 如何寻找无序数组中的第K大元素?

    如何寻找无序数组中的第K大元素? 有这样一个算法题:有一个无序数组,要求找出数组中的第K大元素.比如给定的无序数组如下所示: 如果k=6,也就是要寻找第6大的元素,很显然,数组中第一大元素是24,第二 ...

  3. 数组中的第K大元素问题(C++)

    数组中的第K大元素问题 问题: 在未排序的数组中找到第 k 个最大的元素.请注意,需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 约定: 假设这里数组的长度为 n. 方法一: ...

  4. 无序数组中找第K大的数

    类快排算法 leetcode215 由于只要求找出第k大的数,没必要将数组中所有值都排序. 典型解法:快速排序分组. 在数组中找到第k大的元素 取基准元素,将元素分为两个集合,一个集合元素比基准小,另 ...

  5. 网易_在数组中查找前K个元素

    笔试题,最后一题 查找网易云音乐中播放量最大的前K个歌曲. 换句话说,就是在数组中查找前K大元素. 大致有以下几个思路. 1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数 ...

  6. 第k大的数python代码_Python实现查找数组中任意第k大的数字算法示例

    本文实例讲述了Python实现查找数组中任意第k大的数字算法.分享给大家供大家参考,具体如下: 模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候, ...

  7. 915. 分割数组、剑指 Offer II 076. 数组中的第 k 大的数字

    LeetCode题解 1.分割数组 2.数组中的第 k 大的数字 1.分割数组 题目描述: ➡️挑战链接⬅️ 分析: 首先题目叙述的很简单: 要求呢 1.左右两个区间元素必须连续 2.左右区间必须都有 ...

  8. 【LeetCode】快排-无序整数数组中找第k大的数(或者最小的k个数)

    一个有代表性的题目:无序整数数组中找第k大的数,对快排进行优化. 这里先不说这个题目怎么解答,先仔细回顾回顾快排,掰开了揉碎了理解理解这个排序算法:时间复杂度.空间复杂度:什么情况下是复杂度最高的情况 ...

  9. 1985. 找出数组中的第 K 大整数

    1985. 找出数组中的第 K 大整数 给你一个字符串数组 nums 和一个整数 k .nums 中的每个字符串都表示一个不含前导零的整数. 返回 nums 中表示第 k 大整数的字符串. 注意:重复 ...

最新文章

  1. 微软网站打不开_强烈建议收藏,微软出了自家「协作白板」应用
  2. Objective-C笔记
  3. 2020双11,Dubbo3.0 在考拉的超大规模实践
  4. VTK:PolyData之GreedyTerrainDecimation
  5. Git 中 SSH key 生成步骤
  6. electron-vue解决打包错误、无法调用出开发者工具(亲测有效)
  7. Cognos 增加全局类
  8. MATLAB学习笔记之chirp信号的产生
  9. 解决win7下打不开虚拟机的情况
  10. 应用wps对证件照进行更改颜色,更换只需三步。
  11. 基于超声波的库位重定位算法
  12. IoTGateway 国内开源工业 IoT 物联网网关
  13. URLEncoder.encode(String url)和URLDecoder.decode(String url)
  14. 服务器端安装conda | 配置conda环境
  15. lenovo L480 进入bios_梅捷主板如何在bios中设置u盘启动【详细步骤】
  16. OKL4 Microvisor
  17. NOJ-1149-旅游预算
  18. 百度测开实习感受分享
  19. Linux-Day2-查看,移动,复制命令使用
  20. html字体由粗变细的方法,CSS 让 fontawesome 图标字体变细(示例代码)

热门文章

  1. 自定义时间格式 返回年月日
  2. 你的.net 2.0 真的能与1.1 安全正确地运行在同一台电脑上吗? 小心Server Application Unavailable 错误...
  3. x3650m5不自动进系统_自动起停系统不工作?可能有这几种情况
  4. 信息基础---LDPCcodes随机矩阵构造java项目源代码
  5. java quartz 触发_手动触发Quartz作业
  6. python代码怎么设置,如何设置PyCharm中的Python代码模版(推荐)
  7. 005_Maven POM
  8. 003_Redis配置
  9. linux落字效果代码,Shell中实现飞行文字效果
  10. dx9 lock unlock效率太低_巧用“动作经济原则”,员工不累,效率加倍!