网易2016实习研发工程师编程题——寻找第K大
2017-03-25 00:32
295 查看
1、题目
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。测试样例: [1,3,5,2,2],5,3
返回:2
2、基本思想
本文中不考虑优化算法,直接使用快排算法对数据先进行排序,然后返回排序好的第K大数据。有优化算法的给出方案。2、解决方案
import java.util.*; public class Finder { public int findKth(int[] a, int n, int K) { // write code here return F_QuickSort(a,0,n-1)[n-K]; } public static int[] F_QuickSort(int data[], int l, int r) { if (l < r) { int i = l, j = r, x = data[l]; while (i < j) { while(i < j && data[j] >= x) // 从右向左找第一个小于x的数 j--; //找到后,将这个数赋值给i的位置,并将i向后移动位置 if(i < j) data[i++] = data[j]; while(i < j && data[i] < x) // 从左向右找第一个大于等于x的数 i++; //找到后,将这个数赋值给j的位置,并将j向前移动1位 if(i < j) data[j--] = data[i]; } data[i] = x; F_QuickSort(data, l, i - 1); // 递归调用 F_QuickSort(data, i + 1, r); } return data; } }
相关文章推荐
- 网易2016 实习研发工程师 [编程题]寻找第K大 and leetcode 215. Kth Largest Element in an Array
- 网易 2016 实习研发工程师 3道 编程题-2
- 网易2016实习研发工程师编程题
- 网易 2016 实习研发工程师 3道 编程题-2
- 网易 2016 实习研发工程师 3道 编程题-1
- 二叉树 网易2016实习研发工程师编程题
- 比较重量----网易2016实习研发工程师编程题
- 网易2016 实习研发工程师 [编程题]二叉树
- 牛客网之网易2016实习研发工程师编程题
- 网易2016实习研发工程师编程题
- 网易2016 实习研发工程师编程题
- 网易 2016 实习研发工程师 3道 编程题
- 网易2016研发工程师编程题①
- 网易2016研发工程师编程题②
- 牛刀小试(03)——透镜扫描(网易2016研发工程师编程题)
- 网易2016研发工程师编程题:路灯
- 炮台攻击----网易2016研发工程师编程题
- 网易2016研发工程师编程题
- 网易2016研发工程师编程题-----炮台攻击
- 奖学金--动态规划--网易2016研发工程师编程题