C++ 实现寻找数组平衡点下标
以下是实现该功能的 C++ 代码: ```cpp #include <iostream> using namespace std; int n; int a[100010]; int sum1[100010]; // sum1为前缀和数组 int sum2[100010]; // sum2为后缀和数组 int main() { // 读取整数 n cin >> n; // 读取数组元素 for (int i = 1; i <= n; i++) { cin >> a[i]; } // 计算前缀和 for (int i = 1; i <= n; i++) { sum1[i] = sum1[i - 1] + a[i]; } // 计算后缀和 for (int i = n; i >= 1; i--) { sum2[i] = sum2[i + 1] + a[i]; } // 寻找平衡点 for (int i = 1; i <= n; i++) { if (sum1[i - 1] == sum2[i + 1]) { cout << i << endl; return 0; } } // 若未找到平衡点 cout << -1 << endl; return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取整数 `n`,表示数组的长度。然后读取 `n` 个整数,存储在数组 `a` 中。 2. **前缀和计算**:使用 `sum1` 数组计算前缀和,`sum1[i]` 表示数组前 `i` 个元素的和。 3. **后缀和计算**:使用 `sum2` 数组计算后缀和,`sum2[i]` 表示数组从第 `i` 个元素到最后一个元素的和。 4. **寻找平衡点**:遍历数组,对于每个下标 `i`,检查 `sum1[i - 1]` 是否等于 `sum2[i + 1]`。如果相等,则 `i` 就是平衡点的下标,输出该下标并结束程序。 5. **未找到平衡点**:如果遍历完整个数组都没有找到平衡点,则输出 -1。 ######[AI问答 | 533点数解答 | 2026-05-30 16:22:27]
- C++ 高效计算序列中递增三元组数量:从 O(n^2) 到 O(n log n) 的优化之路(DeepSeek | 742点数解答 | 2025-02-25 18:35:56)310
- C++ 求解序列中递增三元组数量:动态规划实现与复杂度分析(DeepSeek | 631点数解答 | 2025-02-25 18:40:05)250
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)401
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)41
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)367
- C 语言实现:从字符串查找指定字符,附代码及注意要点(字节豆包 | 262点数解答 | 2024-12-14 23:42:54)140
- JavaScript开发:为何 React 的 useState 用数组而非对象?优势揭秘!(阿里通义 | 202点数解答 | 2023-11-09 01:54:01)304
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)283
- 补全代码:精准判断变量 a 是否为数组类型( | 115点数解答 | 2024-05-20 21:58:29)345
- Java 实现:从数组提取姓名并匹配同姓人员信息与数量(字节豆包 | 333点数解答 | 2024-09-10 11:58:36)215
- JS实现数组 ['0', '3'] 到多种格式字符串转换全攻略(百度文心 | 511点数解答 | 2024-10-15 11:05:43)199
- 查询学生分数:C++实现及注意要点(阿里通义 | 376点数解答 | 2024-12-05 19:07:36)244