使用 C++ 寻找数组平衡点下标
以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <vector> // 函数用于找到平衡点下标 int findBalancePoint(const std::vector<int>& arr) { int n = arr.size(); // 计算数组所有元素的总和 int totalSum = 0; for (int num : arr) { totalSum += num; } // 左侧元素的和 int leftSum = 0; for (int i = 0; i < n; ++i) { // 右侧元素的和 int rightSum = totalSum - leftSum - arr[i]; if (leftSum == rightSum) { // 找到平衡点,返回下标(下标从 1 开始) return i + 1; } // 更新左侧元素的和 leftSum += arr[i]; } // 没有找到平衡点,返回 -1 return -1; } int main() { int n; std::cin >> n; std::vector<int> arr(n); for (int i = 0; i < n; ++i) { std::cin >> arr[i]; } int balancePoint = findBalancePoint(arr); std::cout << balancePoint << std::endl; return 0; } ``` ### 代码解释 1. **总和计算**:首先计算数组中所有元素的总和 `totalSum`。 2. **遍历数组**:从数组的第一个元素开始遍历,计算当前元素左侧元素的和 `leftSum`,并通过 `totalSum - leftSum - arr[i]` 计算当前元素右侧元素的和 `rightSum`。 3. **判断平衡点**:如果 `leftSum` 等于 `rightSum`,则当前元素的下标(下标从 1 开始)即为平衡点的下标,返回该下标。 4. **更新左侧和**:每次遍历后,更新 `leftSum`,将当前元素的值加入 `leftSum`。 5. **未找到平衡点**:如果遍历完整个数组都没有找到平衡点,则返回 -1。 ### 复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是数组的长度。需要遍历数组两次,一次计算总和,一次寻找平衡点。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 571点数解答 | 2026-05-30 21:22:13]
- 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
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)375
- PyCharm 中用 Selenium 编写自动化测试脚本,轻松登录 eShop 测试平台并点击“我的订单”(字节豆包 | 304点数解答 | 2024-11-06 15:38:30)467
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)41
- C 语言实现:从字符串查找指定字符,附代码及注意要点(字节豆包 | 262点数解答 | 2024-12-14 23:42:54)140
- Winform开发:含验证与清空功能的注册页面实现(GPT | 5266点数解答 | 2024-06-14 16:04:40)504
- jQuery 实现姓名、邮箱、电话表单验证:成功显示消息,失败提示错误(百度文心 | 858点数解答 | 2024-10-26 23:36:38)449
- jQuery实现表单验证:姓名、邮箱、电话一个都不能少!(阿里通义 | 629点数解答 | 2024-10-29 09:16:19)382
- Go语言实现:动态用户Websocket服务端,生产者消息精准转发多消费者架构设计(字节豆包 | 559点数解答 | 2025-02-25 09:20:32)263
- Go语言实现Windows环境下高性能WebSocket服务端:生产者-消费者架构设计与代码解析(阿里通义 | 600点数解答 | 2025-02-25 09:21:10)233
- MySQL 数据库操作:用德鲁伊连接池和 Spring JDBC 实现 MVC 架构下 Student 表操作及事务测试全解析(字节豆包 | 1115点数解答 | 2025-03-19 11:17:31)323