差分数组实现区间快速加法统计浇水次数
我们可用差分数组来高效解决这个问题。差分数组可以在 O(1) 时间内完成区间加法,最后通过前缀和还原每朵花的浇水次数。 ### ✅ 解题步骤与示例代码 1. **初始化一个长度为 n+2 的差分数组 diff**,全部为 0。多出的长度用于处理区间右端点后的减法。 2. **对每一轮浇水区间 [L, R]**: - diff[L] += 1 - diff[R+1] -= 1 表示区间 [L, R] 内所有花被浇水一次。 3. **计算前缀和**: 遍历 i 从 1 到 n,sum += diff[i],此时 sum 即为第 i 朵花的浇水次数。 4. **输出结果**,数字之间用空格分隔。 ### 💻 C语言代码实现 ```c #include <stdio.h> int main() { int n, q; scanf("%d %d", &n, &q); int diff[102] = {0}; // n < 100,多开一点空间防止越界 for (int i = 0; i < q; i++) { int L, R; scanf("%d %d", &L, &R); diff[L] += 1; diff[R + 1] -= 1; } int sum = 0; for (int i = 1; i <= n; i++) { sum += diff[i]; printf("%d", sum); if (i < n) { printf(" "); } } printf("\n"); return 0; } ``` ### 📌 关键要点 - **差分思想**:区间加操作变为两点修改,极大降低时间复杂度(O(n+q))。 - **边界处理**:差分数组下标从 1 开始,R+1 位置减一,确保只影响 [L,R] 区间。 - **数组长度**:因为 n < 100,设置长度为 102 足够安全。 ######[AI问答 | 460点数解答 | 2026-06-21 19:23:44]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)390
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)279
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)283
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)272
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)474
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)53
- UWP应用:实现两整数相加功能的代码示例(字节豆包 | 755点数解答 | 2024-09-27 13:28:26)213
- C 语言实现一元稀疏多项式 a=3x^14+2x^8+1 与 b=8x^14–3x^10+10x^6 的表示及基本操作(字节豆包 | 1615点数解答 | 2024-10-18 17:19:15)261
- C 语言:链表实现一元稀疏多项式的建立、销毁、输出及加减运算(字节豆包 | 1939点数解答 | 2024-10-18 17:30:58)244
- C 语言实现:随机式子驱动一元稀疏多项式建立、销毁、运算全解析(字节豆包 | 1842点数解答 | 2024-10-29 08:45:36)190
- C 语言实现一元稀疏多项式:建立、销毁、输出及加减运算全解析(字节豆包 | 1832点数解答 | 2024-10-29 08:49:08)258
- Python 实现:乘法与加法口诀表输出及关键逻辑解析(字节豆包 | 412点数解答 | 2025-06-24 09:55:02)100