欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

巧用TreeSet求解第k小整数(洛谷P1138题题解,Java语言描述)

程序员文章站 2022-07-13 13:46:51
...

题目要求

P1138题目链接

巧用TreeSet求解第k小整数(洛谷P1138题题解,Java语言描述)

分析

第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;
                }
            }
        }
    }
}