C++实现计算最少添加数字次数以匹配两个数组元素
以下是解决此问题的C++代码: ```cpp #include <iostream> #include <algorithm> #include <vector> // 此函数用于计算最少添加数字的次数 int minAdditions(std::vector<int>& a, std::vector<int>& b) { int n = a.size(); int m = b.size(); // 对a数组和b数组进行排序,方便后续配对操作 std::sort(a.begin(), a.end()); std::sort(b.begin(), b.end()); int i = 0, j = 0; // 已匹配的元素数量 int matched = 0; while (i < n && j < m) { if (b[j] >= a[i]) { // 如果b[j] >= a[i],说明可以匹配,将匹配数量加1 matched++; i++; j++; } else { // 如果b[j] < a[i],b[j]无法匹配,尝试下一个b元素 j++; } } // 最少添加数字的次数为a数组长度减去已匹配的元素数量 return n - matched; } int main() { int n, m; std::cin >> n >> m; std::vector<int> a(n); std::vector<int> b(m); // 读取a数组的元素 for (int i = 0; i < n; i++) { std::cin >> a[i]; } // 读取b数组的元素 for (int i = 0; i < m; i++) { std::cin >> b[i]; } // 调用minAdditions函数计算最少添加数字的次数 int result = minAdditions(a, b); std::cout << result << std::endl; return 0; } ``` ### 代码解释 1. **排序操作**:对`a`数组和`b`数组进行排序,这样可以方便后续的匹配操作。 2. **匹配过程**:使用双指针`i`和`j`分别遍历`a`数组和`b`数组。如果`b[j] >= a[i]`,说明可以将`b[j]`和`a[i]`匹配,将匹配数量`matched`加1,并将`i`和`j`都向后移动一位;如果`b[j] < a[i]`,说明`b[j]`无法匹配,将`j`向后移动一位。 3. **计算结果**:最少添加数字的次数为`a`数组的长度减去已匹配的元素数量。 ### 复杂度分析 - **时间复杂度**:排序操作的时间复杂度为$O(n log n + m log m)$,匹配过程的时间复杂度为$O(n + m)$,因此总的时间复杂度为$O(n log n + m log m)$。 - **空间复杂度**:主要是存储`a`数组和`b`数组的空间,因此空间复杂度为$O(n + m)$。 ######[AI问答 | 714点数解答 | 2026-03-08 19:44:54]
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)447
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)361
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)376
- C++ 实现:按顺序存储并输出战力 1 - 10 守卫数量(DeepSeek | 130点数解答 | 2026-01-17 14:11:22)66
- C++实现按战力顺序输出守卫数量(字节豆包 | 185点数解答 | 2026-02-25 22:33:20)39
- C++实现按战力顺序输出守卫数量(字节豆包 | 497点数解答 | 2026-03-20 20:01:06)16
- 小核桃存储守卫战力数量的Python程序实现(字节豆包 | 150点数解答 | 2026-04-03 19:47:58)20
- 使用C++实现存储守卫战力并按顺序输出的程序(字节豆包 | 224点数解答 | 2026-04-12 19:13:22)13
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)56
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)69
- jQuery 实战:打造可添加与删除任务的待办事项列表应用(字节豆包 | 499点数解答 | 2024-10-29 20:40:48)287
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)366