less than 1 minute read

<-E 1588> Sum of All Odd Length Subarrays

// Method 1
class Solution {
public:
    int sumOddLengthSubarrays(vector<int>& arr) {

        int n = arr.size();
        int result = 0;

        for(int i = 0; i < n; i++){
            result += arr[i] * (((i + 1)*(n - i) + 1) / 2);
        }
        
        return result;  
    }
};

// Method 2
class Solution {
public:
    int sumOddLengthSubarrays(vector<int>& arr) {
        int ans = 0;
      
        for(int i = 1; i <= arr.size(); i += 2){
            
            int begin = 0;
            while((begin + i) <= arr.size()) {
                
                for(int times = 0; times < i; times++) {
                    ans += arr[begin + times];
                }
                begin += 1;
            }
            
        }
        return ans;
    }
};

// Method 3
class Solution {
public:
    int sumOddLengthSubarrays(vector<int>& arr) {
        int n = arr.size();
        int sum = 0;
        for(int i=1;i<=n;i+=2){
            int windowSize=i;
            int tmpSum=0;
            for(int j=0;j<windowSize;j++){
                tmpSum+=arr[j];
            }
            sum+=tmpSum;
            int start = 0;
            for(int j=windowSize;j<n;j++){
                tmpSum = tmpSum - arr[start];
                tmpSum = tmpSum + arr[j];
                start++;
                sum+=tmpSum;
            }
        }
        return sum;
        
    }
};