logo头像

往者不可谏,来者犹可追。

牛客-北邮-查找第K小数

题目描述

查找一个数组的第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


分析

先排序,然后遍历数组计数查找。


代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <stack>
#include <map>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int main()
{
int n, m,num[1000],cnt=1,ans;
cin>>n;
for(int i = 0; i < n; i ++)
{
cin>>num[i];
}
cin>>m;
sort(num,num+n);
if(m==1)
{
cout<<num[0];
}
else
for(int i = 1; i < n; i ++)
{
if(num[i]!=num[i-1]) cnt++;
if(cnt==m)
{
cout<<num[i];
break;
}
}
return 0;
}
上一篇