您的位置:首页 > 其它

题目1174:查找第K小数

2014-02-21 21:24 309 查看
题目描述:
查找一个数组的第K小的数,注意同样大小算一样大。

如  2 1 3 4 5 2 第三小数为3。

输入:
输入有多组数据。

每组输入n,然后输入n个整数(1<=n<=1000),再输入k。

输出:
输出第k小的整数。

样例输入:
6
2 1 3 5 2 2
3

样例输出:
3


import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.Scanner;
import java.util.PriorityQueue;
import java.util.TreeSet;
import java.util.Comparator;
import java.util.Iterator;

class Main
{
public static final boolean DEBUG = false;

public static void main(String[] args) throws IOException
{
Scanner cin;
int n;

if (DEBUG) {
cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));
} else {
cin = new Scanner(new InputStreamReader(System.in));
}

Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer a, Integer b)
{
return b - a;
}
};

while (cin.hasNext()) {
n = cin.nextInt();
TreeSet<Integer> ts = new TreeSet<Integer>();

for (int i = 0; i < n; i++) {
int num = cin.nextInt();
if (ts.contains(num)) continue;
else {
ts.add(num);
}
}

//System.out.println("size:" + ts.size());
Iterator<Integer> it = ts.iterator();
int cnt = 0;
int m = cin.nextInt();
while (it.hasNext()) {
cnt++;
int num = it.next();
if (cnt == m) {
System.out.println(num);
break;
}

}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: