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; }