酷代码 AI
菜单
服务商

计算序列中第k大与第k小数的差值

### 📝 解题思路 要解决这个问题,我们需要找到序列中第 `k` 大的数和第 `k` 小的数,然后计算它们的差值。由于题目中明确提示可以先使用排序,我们可以直接对数组进行排序,然后通过索引找到对应的值。 ### 💻 代码实现 ```cpp #include <iostream> #include <algorithm> using namespace std; int main() { int n, k; cin >> n >> k; int sequence[n]; for (int i = 0; i < n; ++i) { cin >> sequence[i]; } // 排序数组 sort(sequence, sequence + n); // 第k小的数是 sequence[k - 1] // 第k大的数是 sequence[n - k] int kth_min = sequence[k - 1]; int kth_max = sequence[n - k]; // 计算差值 int result = kth_max - kth_min; cout << result << endl; return 0; } ``` ### 📌 代码解释 1. **输入处理**: - 首先读取输入的整数 `n` 和 `k`。 - 然后读取长度为 `n` 的序列,存储在数组 `sequence` 中。 2. **排序**: - 使用 `sort` 函数对数组 `sequence` 进行升序排序。 3. **查找第 `k` 小的数和第 `k` 大的数**: - 第 `k` 小的数在排序后的数组中位于索引 `k - 1`。 - 第 `k` 大的数在排序后的数组中位于索引 `n - k`。 4. **计算差值**: - 计算第 `k` 大的数减去第 `k` 小的数的差值,并输出结果。 ### 📚 示例运行 **输入1**: ``` 3 1 5 1 3 ``` **输出1**: ``` 4 ``` **输入2**: ``` 5 2 3 2 5 1 4 ``` **输出2**: ``` 2 ``` ######[AI问答 | 537点数解答 | 2026-05-31 21:45:34]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]