【解题报告】lintcode5寻找第k大数
题意
寻找给定无序数组中第k大的数
解法
设置一个标记数组,扫描给出的数组,在标记数组对应下标的数字上加一
然后遍历标记数组,当综合等于给出数组长度-k时,就找到了第k大数(此时标记数组的下标就是这个数字)
代码
class Solution {
/*
* @param k : description of k
* @param nums : array of nums
* @return: description of return
*/
int[] num = new int[10000000];
public int kthLargestElement(int k, int[] nums) {
// write your code here
for (int i =0;i < nums.length;i++)
{
num[nums[i]]++;
}
int count = 0;
int j = 0;
if (nums.length - k != 0)
for ( j = 0;count < nums.length - k;j++)
{
count += num[j];
}
else
for (j = 0;num[j] == 0;j++){}
return j;
}
};