题目描述
查找一个数组的第K小的数,注意同样大小算一样大
如 2 1 3 4 5 2 第三小数为3
如(括号内容为注释)
输入:
6(数组长度n)
2 1 3 5 2 2(数组)
3(K 即为第三小数)
输出:
3
分析:先排序再按照pre判断是否当前比较的元素相同
void find_k()
{
int n;
cin >> n;
vector<int> nums;
if (n == 0)
{
return;
}
int t;
for (int i = 0; i < n; i++)
{
cin >> t;
nums.push_back(t);
}
sort(nums.begin(), nums.end());
int k;
cin >> k;
t = 1;
int i = 1;
int pre = nums[0];
while (i < nums.size() && t < k)
{
if (pre != nums[i])
{
t++;
pre = nums[i];
}
i++;
}
if (t == k)
{
cout << nums[i - 1] << endl;
}
else
{
cout << 0 << endl;
}
}