题目1174:查找第K小数
2014-02-21 21:24
309 查看
题目描述:
查找一个数组的第K小的数,注意同样大小算一样大。
如 2 1 3 4 5 2 第三小数为3。
输入:
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出:
输出第k小的整数。
样例输入:
样例输出:
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;
}
}
}
}
}
查找一个数组的第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;
}
}
}
}
}
相关文章推荐
- 【九度OJ】题目1174:查找第K小数 解题报告
- 九度OJ-题目1174:查找第K小数-10网研上机B
- 题目1174:查找第K小数
- 九度oj 题目1174:查找第K小数(sort的使用)
- 题目1174:查找第K小数
- 九度OJ 题目1174:查找第K小数
- 题目1174:查找第K小数
- 题目1174:查找第K小数
- 九度OJ 1174:查找第K小数 (排序、查找)
- 九度OJ 1174:查找第K小数 (排序、查找)
- 九度OJ 1174 查找第K小数 (STL)
- 【慢慢学算法】:查找第k小数
- 分治算法的利用例子(查找最大最小数,快速排序,查看第k小的数字)
- leetcode 378. Kth Smallest Element in a Sorted Matrix有序矩阵寻找第K小数+二分查找
- leetcode 在有序矩阵中查找某个数,第k小数 (二分法)
- hiho一下 第三十七周 题目1 : 二分·二分查找之k小数
- 快排以及查找第K元素
- 第13题: 题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。
- PAT考试乙级1050(C语言实现) (重点题目)(关于保留小数的坑)
- 杭电ACM OJ 1038 Biker's Trip Odometer 水(只是题目意思有点难理解) java保留两位小数