🔍 子数组元素求和问题全解析 —— 多种解法与性能对比
📘 题目描述
给定一个长度为 n 的整数数组 nums,对于每个下标 i(0 <= i < n),我们定义一个子数组为:
nums[start ... i],其中 start = max(0, i - nums[i])
目标是:对于每个下标 i,计算它所对应的子数组中所有元素的总和,然后将这些和相加,得到最终结果。
🧾 示例:
输入: nums = [1, 2, 3]
对应子数组分别为:
- i=0: start=0 → nums[0:1] = [1] → 和=1
- i=1: start=0 → nums[0:2] = [1,2] → 和=3
- i=2: start=0 → nums[0:3] = [1,2,3] → 和=6
总和: 1 + 3 + 6 = 10
输出: 10
🎯 解题思路分析
本题的核心在于如何高效地求出多个子数组的区间和。朴素做法直接对每个子数组求 sum(nums[start:i+1]),但这种方法在数据量大时效率低下。
🔧 常规思路步骤:
- 遍历每个索引
i - 计算对应的
start = max(0, i - nums[i]) - 取子数组
nums[start ... i]

最低0.47元/天 解锁文章
559

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



