网易笔试题 寻找第K大
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。
给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
测试样例:
[1,3,5,2,2],5,3
返回:2
/*** 快排(从大到小)* 一次快排得到pivot,大于pivot的数在其左边,小于pivot的数在其右边* pivot为第pivot - low + 1 = kp大数* kp > k,第k大数在pivot左边,* kp < k,第k大数在pivot右边,在右边继续寻找K-KP大的数* Created by ustc-lezg on 16/4/7.*/
public class Finder {public int findKth(int[] arr, int n, int K) {return quickSort(arr, 0, n - 1, K);}public int quickSort(int arr[], int low, int high, int k) {if (low == high) {return arr[low];}int pivot = partition(arr, low, high);int kp = pivot - low + 1;//计算pivot是第几大数if (kp == k) {return arr[pivot];}if (k < kp) {return quickSort(arr, low, pivot - 1, k);//递归调用,在前面部分查找第K大的数}else {return quickSort(arr, pivot + 1, high, k - kp);//递归调用,在后面部分查找第K大的数}}public int partition(int[] arr, int low, int high) {int right = high;int left = low;int temp = arr[left];//将>=temp的元素换到左边区域,将<=temp的元素换到右边区域while (left < right) {while (left < right && arr[right] <= temp) {--right;}if (left < right) {arr[left] = arr[right];}while (left < right && arr[left] >= temp) {++left;}if (left < right) {arr[right] = arr[left];}}arr[left] = temp;return left;}
}
网易笔试题 寻找第K大相关推荐
- 网易16年研发实习生笔试题 - 寻找第K大
### 问题 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在. 输入样例 [1,3, ...
- 面试官:海量无序数据,寻找第 K 大的数,越快越好
最近在参加阿里云举办的<第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道>,传送门: https://tianchi.aliyun.com/competition/entra ...
- 海量无序数据寻找第 K 大的数
前言 最近在参加阿里云举办的<第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道>,传送门:https://tianchi.aliyun.com/competition/ent ...
- 算法与数据结构——网易笔试题(一)
算法题 13:二叉堆(网易2016实习研发工程师) 思路: ********************************************************************** ...
- 牛客题霸 [寻找第K大] C++题解/答案
牛客题霸 [寻找第K大] C++题解/答案 题目描述 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的 ...
- [C++日常小题] 寻找第k大数字(numberk)
Description 经过长时间的筹备工作,在Jourk,Ronny,Plipala,阿长,阿沈等人的努力下,DM实验室建立起自己的系列网站,其中包括三个大板块:DMOJ首页.DMOJ论坛.DMOJ ...
- java中二叉树中第k大的数,寻找第k大的数
目录: 1.引子 2.排序解决法 3.类快排解法 4.最小堆解法 1.引子 日常编码中,常见遇到这样的问题,"寻找最大的数",此问题非常容易,可暴力直接遍历找出,也可使用分冶策略找 ...
- 寻找第K大元素的八大算法、源码及拓展
寻找第K大元素的八大算法.源码及拓展 http://www.cnblogs.com/bethunebtj/p/4861378.html 一.问题描述 所谓"第(前)k大数问题"指的 ...
- 寻找第K大 --- 牛客网
寻找第K大 题目链接 描述 代码 题目链接 https://www.nowcoder.com/questionTerminal/e016ad9b7f0b45048c58a9f27ba618bf 描述 ...
最新文章
- 深度学习新星:GANs的基本原理、应用和走向
- Ruby的资源站点和开发工具列表
- Linux下串口编程入门
- OpenCV边缘之间的距离转换功能的实例(附完整代码)
- Redis操作Set类型
- 更精炼更专注的RTMPClient客户端EasyRTMPClient,满足直播、转发、分析等各种需求...
- Java中的基本数据类型转换(自动、强制、提升)
- resize 按钮不会被伪元素遮盖
- android代码使用adb,如何使用adb在Android 11上触发BroadcastReceiver?
- Neo4j配置安装与测试
- Redmi Note10系列发布时间曝光:最高搭载1亿像素主摄
- php 404页面设置,ThinkPHP 404页面的设置方法
- caffe之代码学习
- 九度OJ 题目1534:数组中第K小的数字(二分解)
- STM32 IAP docs
- 谷歌翻译插件对大陆停止服务及其解决方案
- Beini奶瓶U盘PE完整教程[2018-11-28]
- Python生成exe可执行文件
- iOS 开发:知识地图(不定期更新)
- Excel 简单线性回归图表制作
热门文章
- Word页眉设置不同的文字,但是页码按照顺序不变
- APP_ALLOW_MISSING_DEPS :=true
- Davinci DM6446开发攻略——DSP开发工程建立
- LeetCode881:救生艇 (C、C++实现)
- ios-app杀死状态下响应推送
- 报错:RuntimeError: view size is not compatible with input tensor‘s size and stride (at least one dimen
- c语言自动输入一位数字,c语言:要求输入一个四位整数,然后将各位数字按英文输出...
- Android原生拼音输入法分析
- python写入指定的excel_python 写入Excel
- JAVA 之POI导入批量新增、批量检查、日志记录、失败原因、失败条数、数据库映射