题目 1:计算树苗总数
核心思路:
- 输入两个整数
m(每班树苗数)和n(班级数),直接通过乘法计算总树苗数m*n。 - 关键在于理解题目需求,无需复杂逻辑,直接应用算术运算。
题目 2:分类求和(A 类与 B 类数)
核心思路:
- 数学推导:
- A 类数为 1 到 n 中能被 t 整除的数,构成首项为 t、末项为 k*t(k=n/t)、项数为 k 的等差数列。
- 等差数列求和公式:
sum_A = t*k*(k+1)/2。
- 总和计算:1 到 n 的总和为
n*(n+1)/2,B 类和为总和减去 A 类和。
- 避免遍历 1 到 n 的数,通过数学公式优化时间复杂度至 O (1)。
题目 3:计算月份天数(含闰年判断)
核心思路:
- 预存每月天数:用数组
days[]存储 1-12 月的常规天数(2 月默认 28 天)。 - 闰年判断条件:
- 能被 4 整除且不能被 100 整除,或能被 400 整除的年份为闰年。
- 若为闰年且月份为 2 月,输出 29 天,否则输出数组对应天数。
题目 4:数字反转(去除前导零)
核心思路:
- 字符串反转:将数字转为字符串,使用
reverse函数反转字符顺序。 - 前导零处理:遍历反转后的字符串,跳过所有前导零。
- 边界情况:若全为零(如输入 100),反转后可能为空字符串,需输出 0。
题目 5:小球颜色收集(滑动窗口)
核心思路:
- 滑动窗口定义:维护长度为 k 的窗口,记录窗口内颜色出现次数。
- 计数数组:用
count[]统计颜色出现次数,unique变量记录不同颜色数。 - 窗口滑动:
- 移出左边界元素时,若其计数变为 0,
unique减 1。 - 移入右边界元素时,若其计数从 0 变为 1,
unique加 1。
- 移出左边界元素时,若其计数变为 0,
- 动态更新最大值:每次滑动后更新
unique的最大值,时间复杂度 O (n)。
思路总结表
| 题目类型 | 核心策略 | 关键优化点 |
|---|---|---|
| 树苗总数 | 直接算术运算 | 无复杂逻辑,时间 O (1) |
| 分类求和 | 数学公式推导 | 避免遍历,用等差数列求和 |
| 月份天数 | 条件判断 + 预存数据 | 闰年规则记忆与数组索引 |
| 数字反转 | 字符串处理 + 前导零过滤 | 反转后遍历跳过无效零 |
| 小球颜色收集 | 滑动窗口 + 计数数组 | 增量维护不同颜色数,O (n) 时间 |
&spm=1001.2101.3001.5002&articleId=149306137&d=1&t=3&u=02d66d0e12f24d5e9bbe901ee6b0ae50)
4427

被折叠的 条评论
为什么被折叠?



