Sum of All Odd Length Subarrays

Sum of All Odd Length Subarrays:

Problem Description:

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] = 1

[4] = 4

[2] = 2

[5] = 5

[3] = 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, [1] and [2]. Their sum is 3.


Example 3:

Input: arr = [10,11,12]

Output: 66

 

Constraints:

1 <= arr.length <= 100

1 <= arr[i] <= 1000


Solution:

Optimized Solution:


class Solution {

    public int sumOddLengthSubarrays(int[] arr) {

        int n = arr.length, res = 0, start = 0, end = 0,elementappearsinhowmanysubarrays = 0,elementappearinoddsubarrays=0  ;

        for(int i=0; i<arr.length; i++)

        {

             start = n-i;

             end = i+1;

             elementappearsinhowmanysubarrays = start * end;

             elementappearinoddsubarrays = elementappearsinhowmanysubarrays/2;

            if(elementappearsinhowmanysubarrays%2 == 1)

            {

                elementappearinoddsubarrays += 1;

            }

            res = res + elementappearinoddsubarrays*arr[i];

        }

        return res;

    }

}


Time Complexity☝ O(n)


Brute Force Solution:


class Solution {

    public int sumOddLengthSubarrays(int[] arr) {

        int repeat = 0;

        repeat = (arr.length% 2 == 0) ? arr.length-1:arr.length;

        int c = 1, sm = 0;  //c values are 1, 3, 5

        while(c<=repeat)

        {

            for(int i=0; i<=arr.length-c ; i++)

            {

                for(int j=i; j<i+c; j++)

                {

                    sm+=arr[j];

                }

            }

            c+=2;

        }

        return sm;

    }

}


Execution:

Successfully Executed




Reference☝ Sum of All Odd Length Subarrays in Java


                                                                    Happy Coding 💻:-)

Comments

Popular posts from this blog

Valid Username Regular Expression

Rotate String in Right Direction in java

Sum of Elements of Lower Triangular Matrix