package com.imyparts.test;
import java.util.PriorityQueue;
public class Test {
/**
* 查找数组arr中第k大的奇数,如果不存在则返回0
*
* @param arr 无序数组
* @param k 第k大
*/
public static int findKth(int[] arr, int k) {
// 用队列可以解决
PriorityQueue<Integer> queue = new PriorityQueue<Integer>(k);
for (int i : arr) {
// 奇数入列
if (i % 2 == 1) {
queue.offer(i);
} else {
continue;
}
int s = queue.size();
//只保留k个数,弹出最小的数即头部元素
if (s > k) {
queue.poll();
}
}
//没找到返回0
if (queue.size() == 0)
return 0;
//k大的数出列
return queue.peek();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 0, 8 };
int k = 2;
int val = findKth(arr, k);
System.out.print(val);
}
}