C++数组两两分组求较小数之和实现
好的,这个问题的核心是遍历数组,按照每两个数一组的方式,找出每组中较小的数,并将它们累加起来。下面给出C++的实现代码及详细注释。 ## 💻 实现代码 ```cpp #include <iostream> #include <vector> #include <algorithm> // 用于std::min /** * 计算所有数对中较小数之和。 * @param nums 整数数组,长度n为偶数。 * @return 较小数之和。 */ int sumOfMinInPairs(const std::vector<int>& nums) { int sum = 0; int n = nums.size(); // 每两个数为一组,步长为2 for (int i = 0; i < n; i += 2) { // 取出当前组的两个数 int a = nums[i]; int b = nums[i + 1]; // 找出较小数并累加 sum += std::min(a, b); } return sum; } int main() { // 示例输入:n个整数,n为偶数 std::vector<int> numbers = {5, 3, 8, 1, 9, 2}; int result = sumOfMinInPairs(numbers); std::cout << "较小数之和为: " << result << std::endl; return 0; } ``` ## 🔍 详细说明 - **输入要求**:输入的整数个数 `n` 必须是偶数。 - **分组逻辑**:每两个相邻的数为一组,第一和第二个数一组,第三和第四个数一组,不需要任何排序。 - **计算过程**:对每一组使用 `std::min` 取出较小的数,然后加到总和 `sum` 中。 - **时间复杂度**:O(n),只需一次遍历。 - **空间复杂度**:O(1),只使用了常数级别额外空间。 例如对于输入 `{5, 3, 8, 1, 9, 2}`: - 第一组 (5, 3) → min = 3 - 第二组 (8, 1) → min = 1 - 第三组 (9, 2) → min = 2 - 总和 = 3 + 1 + 2 = 6 ######[AI问答 | 514点数解答 | 2026-05-22 19:52:27]
- Java 实现:从点类到圆类,计算圆心坐标(50,30)、半径 4 的圆周长与面积(字节豆包 | 246点数解答 | 2024-11-11 16:36:30)361
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)392
- Python:轻松提取10.0到99.0小数的整数部分(字节豆包 | 136点数解答 | 2026-01-11 19:23:18)61
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)36
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)360
- C语言实现:求a+aa+aaa+...+aa...a(n个a)之和的代码解析(GPT | 214点数解答 | 2024-11-13 16:07:25)181
- Python 代码实现:验证哥德巴赫猜想,严格校验输入求偶数质数分解(字节豆包 | 405点数解答 | 2024-11-27 21:54:51)167
- Python 实现:验证哥德巴赫猜想,输出偶数素数分解最小解(字节豆包 | 244点数解答 | 2024-11-27 21:55:19)202
- Python 实现哥德巴赫猜想验证:含异常处理与效率优化(字节豆包 | 379点数解答 | 2024-11-27 21:57:25)259
- Python实现:验证任一不少于6偶数分解为两质数之和(输出最小a解)(阿里通义 | 241点数解答 | 2024-12-11 10:19:16)296
- Python 求解序列子序列异或函数值总和,附边界处理与性能优化提示(字节豆包 | 290点数解答 | 2025-04-26 10:20:35)108
- 巧用位运算与动态规划:求解序列子序列异或函数值之和(DeepSeek | 1885点数解答 | 2025-04-26 10:22:18)115