巧用TreeSet求解第k小整数(洛谷P1138题题解,Java语言描述)
程序员文章站
2022-07-13 13:46:51
...
题目要求
分析
第K小整数应该是比较经典的问题啦,但我们也可以利用现成的数据结构去完成轻松处理。
既然还要去重,那不妨……嘿嘿嘿……TreeSet万岁!!
把元素全打进去就完成了去重+排序呢。
最后先比较一下k和TreeSet的size的大小,毕竟这个size已经是去重了的呢。
用一个counter计一下数就完事啦。
AC代码(Java语言描述)
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt(), k = scanner.nextInt();
Set<Integer> set = new TreeSet<>();
for (int i = 0; i < num; i++) {
set.add(scanner.nextInt());
}
scanner.close();
if (k > set.size()) {
System.out.println("NO RESULT");
} else {
int counter = 0;
for (int i : set) {
counter++;
if (counter == k) {
System.out.println(i);
break;
}
}
}
}
}