Hello 大家好我是小亦,今天又来更新题解了哈哈,一天要更2、3呢,今天的题目很简单难度为(普及-)非常简单,适合新手来写话不多说思路qwq:
这道题使用模拟和排序做的非常基础下面为思路点
读取输入:首先读取n和k的值,然后读取n个正整数。
排序:将读取的正整数排序。
去重:由于相同大小的整数只计算一次,我们需要去除排序后数组中的重复元素。
查找第k个最小整数:遍历去重后的数组,找到第k个元素。
输出结果:如果找到了第k个元素,输出它的值;如果没有找到(即k值大于去重后数组的长度),则输出”NO RESULT”。
Ok,说完了如果还不懂的可以私信(指新手qwq)话不多说上代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> nums(n);
for (int i = 0; i < n; ++i) {
cin >> nums[i];
}
// 排序
sort(nums.begin(), nums.end());
// 去重
vector<int> unique_nums;
unique_nums.push_back(nums[0]);
for (int i = 1; i < n; ++i) {
if (nums[i] != nums[i - 1]) {
unique_nums.push_back(nums[i]);
}
}
// 查找第k个最小整数
if (k > 0 && k <= unique_nums.size()) {
cout << unique_nums[k - 1] << endl;
} else {
cout << "NO RESULT" << endl;
}
return 0;
}
写题解放个小棕兔,你这是。。。
哈哈