LintCode-第k大元素
在数组中找到第k大的元素
您在真实的面试中是否遇到过这个题?
给出数组[9,3,2,4,8]。第三大的元素是4
给出数组 [1,2,3,4,5]。第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推
你能够交换数组中的元素的位置
要求时间复杂度为O(n),空间复杂度为O(1)
标签 Expand
相关题目 Expand
分析:利用快排的思想。不断partition,
代码:
class Solution {
public:/** param k : description of k* param nums : description of array and index 0 ~ n-1* return: description of return*/int kthLargestElement(int k, vector<int> nums) {// write your code herereturn findKthLargestElement(k,nums,0,nums.size()-1);}int findKthLargestElement(int k,vector<int>& nums,int start,int end){if(start==end)return nums[start];int index = partition(nums,start,end);if(end-index+1==k)return nums[index];else if(end-index+1>k)return findKthLargestElement(k,nums,index+1,end);elsereturn findKthLargestElement(k-(end-index+1),nums,start,index-1);}int partition(vector<int>&nums,int start,int end){int x = (start+end)/2;swap(nums[start],nums[x]);int i = start+1;int j = i;while(i<=end&&j<=end){if(nums[j]<nums[start]){swap(nums[i],nums[j]);i++;}j++;}swap(nums[start],nums[i-1]);return i-1;}
};
转载于:https://www.cnblogs.com/yangykaifa/p/7007226.html
LintCode-第k大元素相关推荐
- LintCode——第K大元素
第K大元素:在数组num中找到第k大的元素(可以交换数组中的元素的位置) 样例: 数组 [9,3,2,4,8],第三大的元素是 4 数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4 ...
- 【算法】快速选择算法 ( 数组中找第 K 大元素 )
算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...
- 堆实战(动态数据流求top k大元素,动态数据流求中位数)
动态数据集合中求top k大元素 第1大,第2大 ...第k大 k是这群体里最小的所以要建立个小顶堆 只需要维护一个大小为k的小顶堆 即可当来的元素(newCome)> 堆顶元素(smallTo ...
- 数据流中的第k大元素的golang实现
设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...
- 常考数据结构与算法:查找第K大元素算法
题目描述 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在. 扩展思考:如何处理数组中 ...
- DC-leetcode215数组中的第k大元素
在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...
- leetcode 703. 数据流中的第K大元素 最小堆解法 c语言
如题: 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含 ...
- 从C语言的角度重构数据结构系列(七)-数据结构堆知识求解数据流中的第K大元素
前言 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战应用系列课程 https://blog.csdn.net/wenyusuran/category_2239261.html ...
- 在一个无序的int数组上构建一个最小堆的时间复杂度_漫画:寻找无序数组的第k大元素(修订版)...
----- 第二天 ----- 题目是什么意思呢?比如给定的无序数组如下: 如果 k=6,也就是要寻找第6大的元素,这个元素是哪一个呢? 显然,数组中第一大的元素是24,第二大的元素是20,第三大的元 ...
- 数组中的元素赋值给元素_漫画:寻找无序数组的第k大元素
本期封面作者:泰勒太乐 ----- 第二天 ----- 题目是什么意思呢?比如给定的无序数组如下: 如果 k=6,也就是要寻找第6大的元素,这个元素是哪一个呢? 显然,数组中第一大的元素是24,第 ...
最新文章
- 阿联酋的科技野心:AI或将成为新“石油”
- 前端趋势榜:上周最有意思、又实用的 10 大 Web 项目 - 210922
- 启明云端分享|乐鑫推出在线选型工具 ESP Product Selector
- linux系统管理Linux系统实验,实验4-Linux系统管理实验.pdf
- scrapy安装_爬虫框架Scrapy简介与安装
- c语言位运算符的使用_C语言程序使用位运算符检查给定数字是否为回文
- 基于模板的通用代码生成器LKGenerator(一)-发布和主要功能介绍
- JavaScript的可变参数介绍
- 奇怪,为什么在主页上面只列出最近的随笔,而文章呢?
- Java项目的开发流程
- CIO40知识星球—3年主管升职IT经理(28-30岁)
- nodejs 系统 临时文件夹
- java数组初始化的方式_java数组初始化方式
- Java虚拟机(JVM源码):编译OpenJDK源码
- 4000字干货长文!从校招和社招的角度说说如何准备大厂面试?
- 17.继承和派生的基本概念
- grpc报错: java.nio.channels.UnresolvedAddressException : null
- 04 - 字符和循环分支
- Vue使用Stompjs接收Activemq的信息
- Java给Word添加目录
热门文章
- dokuwiki 的管理和使用
- STM32开发 -- WIFI那些事儿(一)
- TensorFlow for Hackers (Part VI) - Human Activity Recognition using LSTMs on Android
- mysql批量加逗号_批量插入数据到数据库的方式
- volte信令流程详解_VOLTE高清语音通话,呼叫时延低于3秒是如何做到的?
- mysql 两表管理查询_mysql两表查询
- 文件不混淆_Android Studio配置反混淆
- themleft模板库_Thymeleaf 模板的使用
- 元胞自动机与相关理论和方法
- 如果在系统里面无法格式化磁盘可以尝试以下方法