DC-leetcode215数组中的第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 ≤ 数组的长度。
分析:这种问题老师讲了很多解法,一步比一步的效率要好,这里我用了基于划分的方法,类似于快排。
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大元素相关推荐
- 【算法】快速选择算法 ( 数组中找第 K 大元素 )
算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...
- 如何寻找无序数组中的第K大元素?
如何寻找无序数组中的第K大元素? 有这样一个算法题:有一个无序数组,要求找出数组中的第K大元素.比如给定的无序数组如下所示: 如果k=6,也就是要寻找第6大的元素,很显然,数组中第一大元素是24,第二 ...
- 数组中的第K大元素问题(C++)
数组中的第K大元素问题 问题: 在未排序的数组中找到第 k 个最大的元素.请注意,需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 约定: 假设这里数组的长度为 n. 方法一: ...
- 无序数组中找第K大的数
类快排算法 leetcode215 由于只要求找出第k大的数,没必要将数组中所有值都排序. 典型解法:快速排序分组. 在数组中找到第k大的元素 取基准元素,将元素分为两个集合,一个集合元素比基准小,另 ...
- 网易_在数组中查找前K个元素
笔试题,最后一题 查找网易云音乐中播放量最大的前K个歌曲. 换句话说,就是在数组中查找前K大元素. 大致有以下几个思路. 1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数 ...
- 第k大的数python代码_Python实现查找数组中任意第k大的数字算法示例
本文实例讲述了Python实现查找数组中任意第k大的数字算法.分享给大家供大家参考,具体如下: 模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候, ...
- 915. 分割数组、剑指 Offer II 076. 数组中的第 k 大的数字
LeetCode题解 1.分割数组 2.数组中的第 k 大的数字 1.分割数组 题目描述: ➡️挑战链接⬅️ 分析: 首先题目叙述的很简单: 要求呢 1.左右两个区间元素必须连续 2.左右区间必须都有 ...
- 【LeetCode】快排-无序整数数组中找第k大的数(或者最小的k个数)
一个有代表性的题目:无序整数数组中找第k大的数,对快排进行优化. 这里先不说这个题目怎么解答,先仔细回顾回顾快排,掰开了揉碎了理解理解这个排序算法:时间复杂度.空间复杂度:什么情况下是复杂度最高的情况 ...
- 1985. 找出数组中的第 K 大整数
1985. 找出数组中的第 K 大整数 给你一个字符串数组 nums 和一个整数 k .nums 中的每个字符串都表示一个不含前导零的整数. 返回 nums 中表示第 k 大整数的字符串. 注意:重复 ...
最新文章
- 微软网站打不开_强烈建议收藏,微软出了自家「协作白板」应用
- Objective-C笔记
- 2020双11,Dubbo3.0 在考拉的超大规模实践
- VTK:PolyData之GreedyTerrainDecimation
- Git 中 SSH key 生成步骤
- electron-vue解决打包错误、无法调用出开发者工具(亲测有效)
- Cognos 增加全局类
- MATLAB学习笔记之chirp信号的产生
- 解决win7下打不开虚拟机的情况
- 应用wps对证件照进行更改颜色,更换只需三步。
- 基于超声波的库位重定位算法
- IoTGateway 国内开源工业 IoT 物联网网关
- URLEncoder.encode(String url)和URLDecoder.decode(String url)
- 服务器端安装conda | 配置conda环境
- lenovo L480 进入bios_梅捷主板如何在bios中设置u盘启动【详细步骤】
- OKL4 Microvisor
- NOJ-1149-旅游预算
- 百度测开实习感受分享
- Linux-Day2-查看,移动,复制命令使用
- html字体由粗变细的方法,CSS 让 fontawesome 图标字体变细(示例代码)
热门文章
- 自定义时间格式 返回年月日
- 你的.net 2.0 真的能与1.1 安全正确地运行在同一台电脑上吗? 小心Server Application Unavailable 错误...
- x3650m5不自动进系统_自动起停系统不工作?可能有这几种情况
- 信息基础---LDPCcodes随机矩阵构造java项目源代码
- java quartz 触发_手动触发Quartz作业
- python代码怎么设置,如何设置PyCharm中的Python代码模版(推荐)
- 005_Maven POM
- 003_Redis配置
- linux落字效果代码,Shell中实现飞行文字效果
- dx9 lock unlock效率太低_巧用“动作经济原则”,员工不累,效率加倍!