查找第k小的数
时间限制:1秒 空间限制:65536K 热度指数:4653 算法知识视频讲解
题目描述
查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。输入描述:
输入有多组数据。 每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出描述:
输出第k小的整数。示例1
输入
6 2 1 3 5 2 2 3
输出
3
package test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class kthnum { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); while (scanner.hasNext()) { int n=scanner.nextInt(); List<Integer> list=new ArrayList<Integer>(); for (int i = 0; i < n; i++) { list.add(scanner.nextInt()); } Collections.sort(list); int k=scanner.nextInt(); int r=list.get(0); k--; for (int i = 1; i <list.size(); i++) { int current=list.get(i); if (current!=r) { r=current; k--; } if (k==0) { break; } } System.out.println(r); } } }
将所有输入的元素先进行排序,然后根据从小到大的顺序进行遍历,找到第k小的数然后进行输出。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 求第k小的数 O(n)复杂度
- 下一篇: 快速排序求第k小的数