酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++ 实现序列中第k大数减第k小数的差值计算

根据描述,需要计算序列中第 k 大的数减去第 k 小的数的值。第 k 大指从大到小排序后第 k 个元素,第 k 小指从小到大排序后第 k 个元素。由于两者对称,第 k 大 = 第 (n - k + 1) 小。 实现步骤: 1. 读取 n, k 和序列元素。 2. 对序列排序(升序)。 3. 第 k 小 = sorted[k-1],第 k 大 = sorted[n-k]。 4. 输出 sorted[n-k] - sorted[k-1]。 时间复杂度 O(n log n),空间 O(n)。 以下是 C++ 代码: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; ++i) cin >> a[i]; sort(a.begin(), a.end()); // 升序排序 // 第 k 小(1-based)索引 k-1,第 k 大(1-based)索引 n-k int kth_small = a[k-1]; int kth_large = a[n-k]; cout << kth_large - kth_small << endl; return 0; } ``` 注意 k 必须满足 1 ≤ k ≤ n。题目保证序列为正整数,可直接使用 int。 ######[AI问答 | 347点数解答 | 2026-08-07 23:49:20]

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