有一个整数数组,请你根据快速排序的思路,找出数组中第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大相关推荐

  1. 网易16年研发实习生笔试题 - 寻找第K大

    ### 问题 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在. 输入样例 [1,3, ...

  2. 面试官:海量无序数据,寻找第 K 大的数,越快越好

    最近在参加阿里云举办的<第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道>,传送门: https://tianchi.aliyun.com/competition/entra ...

  3. 海量无序数据寻找第 K 大的数

    前言 最近在参加阿里云举办的<第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道>,传送门:https://tianchi.aliyun.com/competition/ent ...

  4. 算法与数据结构——网易笔试题(一)

    算法题 13:二叉堆(网易2016实习研发工程师) 思路: ********************************************************************** ...

  5. 牛客题霸 [寻找第K大] C++题解/答案

    牛客题霸 [寻找第K大] C++题解/答案 题目描述 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的 ...

  6. [C++日常小题] 寻找第k大数字(numberk)

    Description 经过长时间的筹备工作,在Jourk,Ronny,Plipala,阿长,阿沈等人的努力下,DM实验室建立起自己的系列网站,其中包括三个大板块:DMOJ首页.DMOJ论坛.DMOJ ...

  7. java中二叉树中第k大的数,寻找第k大的数

    目录: 1.引子 2.排序解决法 3.类快排解法 4.最小堆解法 1.引子 日常编码中,常见遇到这样的问题,"寻找最大的数",此问题非常容易,可暴力直接遍历找出,也可使用分冶策略找 ...

  8. 寻找第K大元素的八大算法、源码及拓展

    寻找第K大元素的八大算法.源码及拓展 http://www.cnblogs.com/bethunebtj/p/4861378.html 一.问题描述 所谓"第(前)k大数问题"指的 ...

  9. 寻找第K大 --- 牛客网

    寻找第K大 题目链接 描述 代码 题目链接 https://www.nowcoder.com/questionTerminal/e016ad9b7f0b45048c58a9f27ba618bf 描述 ...

最新文章

  1. 深度学习新星:GANs的基本原理、应用和走向
  2. Ruby的资源站点和开发工具列表
  3. Linux下串口编程入门
  4. OpenCV边缘之间的距离转换功能的实例(附完整代码)
  5. Redis操作Set类型
  6. 更精炼更专注的RTMPClient客户端EasyRTMPClient,满足直播、转发、分析等各种需求...
  7. Java中的基本数据类型转换(自动、强制、提升)
  8. resize 按钮不会被伪元素遮盖
  9. android代码使用adb,如何使用adb在Android 11上触发BroadcastReceiver?
  10. Neo4j配置安装与测试
  11. Redmi Note10系列发布时间曝光:最高搭载1亿像素主摄
  12. php 404页面设置,ThinkPHP 404页面的设置方法
  13. caffe之代码学习
  14. 九度OJ 题目1534:数组中第K小的数字(二分解)
  15. STM32 IAP docs
  16. 谷歌翻译插件对大陆停止服务及其解决方案
  17. Beini奶瓶U盘PE完整教程[2018-11-28]
  18. Python生成exe可执行文件
  19. iOS 开发:知识地图(不定期更新)
  20. Excel 简单线性回归图表制作

热门文章

  1. Word页眉设置不同的文字,但是页码按照顺序不变
  2. APP_ALLOW_MISSING_DEPS :=true
  3. Davinci DM6446开发攻略——DSP开发工程建立
  4. LeetCode881:救生艇 (C、C++实现)
  5. ios-app杀死状态下响应推送
  6. 报错:RuntimeError: view size is not compatible with input tensor‘s size and stride (at least one dimen
  7. c语言自动输入一位数字,c语言:要求输入一个四位整数,然后将各位数字按英文输出...
  8. Android原生拼音输入法分析
  9. python写入指定的excel_python 写入Excel
  10. JAVA 之POI导入批量新增、批量检查、日志记录、失败原因、失败条数、数据库映射