所有奇数长度子数组的和
前缀和
预处理前缀和,两层循环一层枚举长度,一层枚举起始下标
class Solution {
public:
int sumOddLengthSubarrays(vector<int>& arr) {
int res = 0, n = arr.size();
vector<int> f(n + 1);
for (int i = 0; i < arr.size(); i ++ ) {
f[i + 1] += arr[i] + f[i];
}
for (int i = 1; i <= n; i ++ ) {
for (int len = 1; len + i - 1 <= n; len += 2 ) {
res += f[len + i - 1] - f[i - 1];
}
}
return res;
}
};