平衡点下标查找问题的代码实现及思路解析
### 💡思路分析 要找到平衡点下标,可先计算前缀和与后缀和数组,然后遍历数组,检查每个位置是否满足左侧数之和等于右侧数之和。 ### 📝代码实现 ```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; } } 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`为平衡点下标,输出并结束程序。 ### 复杂度分析 - **时间复杂度**:$O(n)$,主要是计算前缀和、后缀和以及查找平衡点的时间。 - **空间复杂度**:$O(n)$,主要是前缀和数组和后缀和数组的空间开销。 ######[AI问答 | 565点数解答 | 2026-05-24 14:14:43]
- 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)249
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)397
- Java 实现通用文件存储系统:含随机读写与空闲空间回收(字节豆包 | 686点数解答 | 2024-11-21 16:25:51)249
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)322
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)340
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)364
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)515
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)397
- C 语言实现:从字符串查找指定字符,附代码及注意要点(字节豆包 | 262点数解答 | 2024-12-14 23:42:54)139
- Linux开发:用find命令查找/usr目录下超1MB的文件(百度文心 | 153点数解答 | 2023-11-09 18:45:10)225
- 8 个实用命令,助 Linux 开发者轻松查找服务器平均负载!(百度文心 | 311点数解答 | 2023-11-09 18:47:10)244