LeetCode 1588. Sum of All Odd Length Subarrays

Description

https://leetcode.com/problems/sum-of-all-odd-length-subarrays/

Given an array of positive integers arr, calculate the sum of all possible odd-length subarrays.

A subarray is a contiguous subsequence of the array.

Return the sum of all odd-length subarrays of arr.

Example 1:

Input: arr = [1,4,2,5,3]
Output: 58
Explanation: The odd-length subarrays of arr and their sums are:
 = 1
 = 4
 = 2
 = 5
 = 3
[1,4,2] = 7
[4,2,5] = 11
[2,5,3] = 10
[1,4,2,5,3] = 15
If we add all these together we get 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58

Example 2:

Input: arr = [1,2]
Output: 3
Explanation: There are only 2 subarrays of odd length,  and . Their sum is 3.

Example 3:

Input: arr = [10,11,12]
Output: 66

Constraints:

• 1 <= arr.length <= 100
• 1 <= arr[i] <= 1000

Explanation

Iterate all the odds lengths which are shorter than the array length. And find all the sub array at each odd length and sum the sum array up.

Python Solution

class Solution:
def sumOddLengthSubarrays(self, arr: List[int]) -> int:
n = len(arr)

sub_size = 1

result = 0

while sub_size <= n:

for i in range(0, len(arr) - sub_size + 1):
sub = arr[i : i + sub_size]
result += sum(sub)

sub_size += 2

return result

• Time Complexity: O(N).
• Space Complexity: O(N).