题解
本题可以采用先排序,再去重,然后找第K小的元素。
注意
1.去重函数会去除相邻连续的重复元素,不相邻的不会去除
2.去重函数返回去重后的尾指针
int a[10]; for(int i = 0;i<10;i++) { cin>>a[i]; } //unique(a,a+n)表示去重 //unique(a,a+n)-a 表示去重后的元素个数 int n = unique(a,a+10)-a;
3.去重后数组的长度并未改变,如果有必要可以擦除
a.erase(unique(a.begin(),a.end()),a.end())
#include <bits/stdc++.h>
using namespace std;
// 使用Stl
//vector<int> a;
//int main()
//{
// int n, k;
// cin >> n >> k;
// int x;
// for (int i = 0; i < n; i++)
// {
// cin >> x;
// a.push_back(x);
//
// }
// sort(a.begin(), a.end());
//
//
// int m = unique(a.begin(), a.end()) - a.begin();
//
// if (m < k)
// {
// cout << "NO RESULT" << endl;
// }
// else {
// cout << a[k-1] << endl;
// }
// for (int i = 0; i < m; i++)
// {
// cout << a[i];
// }
// return 0;
//}
//用数组
int a[10000 + 5];
int main()
{
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
int m = unique(a, a + n) - a;
/*for (int i = 0; i < n; i++)
{
cout << a[i];
}
return 0;*/
if (k>n)
{
cout << "NO RESULT";
}
else
{
cout << a[k - 1];
}
return 0;
}