滑动窗口求连续k个最大危险值之和(C++实现)
## 😄 解题思路 题目要求计算**连续 k 个守卫**的危险程度总和最大值。 由于数据规模 n ≤ 100000,直接双重循环会超时,需要使用**滑动窗口**技巧: 先计算前 k 个元素的和,然后窗口每次右移一格,减去离开的元素,加上新进入的元素,同时更新最大值。 ## 🧮 算法步骤 1. 读取 n 和 k。 2. 读取数组 a[1] 到 a[n]。 3. 计算初始窗口和:sum = a[1] + a[2] + ... + a[k]。 4. 用循环从 k+1 到 n: - sum = sum - a[i-k] + a[i] - 若 sum > maxSum,更新 maxSum。 5. 输出 maxSum。 ## 💻 C++ 代码实现 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } // 计算初始窗口和 long long sum = 0; for (int i = 0; i < k; i++) { sum += a[i]; } long long maxSum = sum; // 滑动窗口 for (int i = k; i < n; i++) { sum = sum - a[i - k] + a[i]; maxSum = max(maxSum, sum); } cout << maxSum << endl; return 0; } ``` ## 📊 复杂度分析 **时间复杂度**:O(n),只遍历一次数组。 **空间复杂度**:O(n),用于存储数组,实际也可优化为 O(1) 但此处用 vector 简洁表示。 **注意**:危险程度总和可能超出 int 范围(最大值 100000 * 1000 = 1e8),使用 long long 安全。 ######[AI问答 | 478点数解答 | 2026-08-29 21:45:15]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)571
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)421
- 深入解析洛谷打卡系统:规则揭秘与代码实现(字节豆包 | 316点数解答 | 2025-11-16 19:45:59)203
- 高考毕业晚会难题:从学生能力值求最大默契程度的Python解法(字节豆包 | 487点数解答 | 2026-01-24 13:10:18)127
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)484
- C语言实现:求a+aa+aaa+...+aa...a(n个a)之和的代码解析(GPT | 214点数解答 | 2024-11-13 16:07:25)225
- Python 代码实现:验证哥德巴赫猜想,严格校验输入求偶数质数分解(字节豆包 | 405点数解答 | 2024-11-27 21:54:51)232
- Python 实现:验证哥德巴赫猜想,输出偶数素数分解最小解(字节豆包 | 244点数解答 | 2024-11-27 21:55:19)245
- Python 实现哥德巴赫猜想验证:含异常处理与效率优化(字节豆包 | 379点数解答 | 2024-11-27 21:57:25)298
- Python实现:验证任一不少于6偶数分解为两质数之和(输出最小a解)(阿里通义 | 241点数解答 | 2024-12-11 10:19:16)341
- Python 求解序列子序列异或函数值总和,附边界处理与性能优化提示(字节豆包 | 290点数解答 | 2025-04-26 10:20:35)152
- 巧用位运算与动态规划:求解序列子序列异或函数值之和(DeepSeek | 1885点数解答 | 2025-04-26 10:22:18)155