Find maximum (or minimum) sum of a subarray of size k in C++

C++Server Side ProgrammingProgramming

In this problem, we are given an  array arr[] and a number k. Our task is to Find the maximum (or minimum) sum of a subarray of size k. 

Let’s take an example to understand the problem, 

Input: arr[] = {55, 43, 12, 76, 89, 25, 99} , k = 2

Output: 165

Explanation:

The subarray of size 2 has sum = 76 + 89 = 165

Solution Approach

A simple approach to solve the problem is by finding all k sized subarrays and then return the sum with maximum value.

Another Approach is using the sliding window, we will find the sum of k sized subarrayes. For this, the next k sized subarray, we will subtract the last index element and add the next index element.

And then return the subarray sum with the maximum value. 

Program to illustrate the working of our solution,

Example

Live Demo

#include <iostream>
using namespace std;

int findMaxSumSubarray(int arr[], int n, int k) {
   
   if (n < k) {
      cout << "Invalid";
      return -1;
   }

   int maxSum = 0;
   for (int i=0; i<k; i++)
      maxSum += arr[i];
   int curr_sum = maxSum;
   for (int i=k; i<n; i++) {
      curr_sum += arr[i] - arr[i-k];
      maxSum = max(maxSum, curr_sum);
   }
   return maxSum;
}

int main() {
   
   int arr[] = {55, 43, 12, 76, 89, 25, 99};
   int n = sizeof(arr)/sizeof(arr[0]);
   int k = 2;
   cout<<"The sum of subarray with max sum of size "<<k<<" is "<<findMaxSumSubarray(arr, n, k);
   return 0;
}

Output

The sum of subarray with max sum of size 2 is 165
raja
Published on 25-Jan-2021 05:17:03
Advertisements