1588.所有奇数长度子数组的和
题目描述
给你一个正整数数组arr,请你计算所有可能的奇数长度子数组的和。
子数组定义为原数组中的一个连续子序列。
请你返回arr中所有奇数长度子数组的和。
示例1
输入:arr = [1, 4, 2, 5, 3]
输出:58
解释:所有奇数长度子数组的和为1+4+2+5+3+(1+4+2)+(4+2+5)+(2+5+3)+(1+4+2+5+3)=58
示例2
输入:arr = [1, 2]
输出:3
解释:总共只有2个长度为奇数的子数组,和为3。
示例3
输入:arr = [10, 11, 12]
输出:66
提示
- 1 <= arr.length <= 100
- 1 <= arr[i] <= 1000
思路:切片求和
应用切片遍历列表求和。
class Solution:
def sumOddLengthSubarrays(self, arr: List[int]) -> int:
i, sumall = 1, 0
while i <= len(arr):
for j in range(len(arr)-i+1):
sumall += sum(arr[j:j+i])
i += 2
return sumall