Related Articles

# Subarray of size k with given sum

• Difficulty Level : Easy
• Last Updated : 17 Jun, 2021

Given an array arr[], an integer K and a Sum. The task is to check if there exists any subarray with K elements whose sum is equal to the given sum. If any of the subarray with size K has the sum equal to the given sum then print YES otherwise print NO.
Examples

```Input: arr[] = {1, 4, 2, 10, 2, 3, 1, 0, 20}
k = 4, sum = 18
Output: YES
Subarray = {4, 2, 10, 2}

Input: arr[] = {1, 4, 2, 10, 2, 3, 1, 0, 20}
k = 3, sum = 6
Output: YES```

A simple solution is to use nested loops, where we check every subarray of size k.
Below is the implementation of the above approach:

## C++

 `// CPP program to check if any Subarray of size``// K has a given Sum``#include ``using` `namespace` `std;` `// Function to check if any Subarray of size K``// has a  given Sum``bool` `checkSubarraySum(``int` `arr[], ``int` `n,``                      ``int` `k, ``int` `sum)``{``    ``// Consider all blocks starting with i.``    ``for` `(``int` `i = 0; i < n - k + 1; i++) {` `        ``int` `current_sum = 0;` `        ``// Consider each subarray of size k``        ``for` `(``int` `j = 0; j < k; j++)``            ``current_sum = current_sum + arr[i + j];` `        ``if` `(current_sum == sum)``            ``return` `true``;       ``    ``}``    ``return` `false``;``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 1, 4, 2, 10, 2, 3, 1, 0, 20 };``    ``int` `k = 4;``    ``int` `sum = 18;` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``if` `(checkSubarraySum(arr, n, k, sum))``        ``cout << ``"YES"``;``    ``else``        ``cout << ``"NO"``;` `    ``return` `0;``}`

## Java

 `// Java program to check``// if any Subarray of size``// K has a given Sum``class` `GFG``{` `// Function to check if any``// Subarray of size K has``// a given Sum``static` `boolean` `checkSubarraySum(``int` `arr[], ``int` `n,``                                ``int` `k, ``int` `sum)``{``    ``// Consider all blocks``    ``// starting with i.``    ``for` `(``int` `i = ``0``; i < n - k + ``1``; i++)``    ``{` `        ``int` `current_sum = ``0``;` `        ``// Consider each``        ``// subarray of size k``        ``for` `(``int` `j = ``0``; j < k; j++)``            ``current_sum = current_sum +``                          ``arr[i + j];` `        ``if` `(current_sum == sum)``            ``return` `true``;    ``    ``}``    ``return` `false``;``}` `// Driver code``public` `static` `void` `main(String args[])``{``    ``int` `arr[] = ``new` `int``[] { ``1``, ``4``, ``2``, ``10``, ``2``,``                            ``3``, ``1``, ``0``, ``20` `};``    ``int` `k = ``4``;``    ``int` `sum = ``18``;` `    ``int` `n = arr.length;` `    ``if` `(checkSubarraySum(arr, n, k, sum))``        ``System.out.println(``"YES"``);``    ``else``        ``System.out.println(``"NO"``);``}``}` `// This code is contributed``// by Kirti_Mangal`

## Python3

 `# Python3 program to check``# if any Subarray of size``# K has a given Sum` `# Function to check if``# any Subarray of size``# K, has a given Sum``def` `checkSubarraySum(arr, n, k, ``sum``):``    ` `    ``# Consider all blocks``    ``# starting with i.``    ``for` `i ``in` `range` `(n ``-` `k ``+` `1``):` `        ``current_sum ``=` `0``;` `        ``# Consider each subarray``        ``# of size k``        ``for` `j ``in` `range``(k):``            ``current_sum ``=` `(current_sum ``+``                            ``arr[i ``+` `j]);` `        ``if` `(current_sum ``=``=` `sum``):``            ``return` `True``;    ``    ``return` `False``;` `# Driver code``arr ``=` `[``1``, ``4``, ``2``, ``10``, ``2``,``          ``3``, ``1``, ``0``, ``20``];``k ``=` `4``;``sum` `=` `18``;` `n ``=` `len``(arr);` `if` `(checkSubarraySum(arr, n, k, ``sum``)):``    ``print``(``"YES"``);``else``:``    ``print``(``"NO"``);` `# This code is contributed by mits`

## C#

 `// C# program to check if any``// Subarray of size K has a given Sum``using` `System;``class` `GFG``{` `// Function to check if any Subarray``// of size K has a given Sum``static` `bool` `checkSubarraySum(``int``[] arr, ``int` `n,``                             ``int` `k, ``int` `sum)``{``    ``// Consider all blocks``    ``// starting with i.``    ``for` `(``int` `i = 0; i < n - k + 1; i++)``    ``{` `        ``int` `current_sum = 0;` `        ``// Consider each``        ``// subarray of size k``        ``for` `(``int` `j = 0; j < k; j++)``            ``current_sum = current_sum +``                            ``arr[i + j];` `        ``if` `(current_sum == sum)``            ``return` `true``;    ``    ``}``    ``return` `false``;``}` `// Driver code``static` `void` `Main()``{``    ``int``[] arr = ``new` `int``[] { 1, 4, 2, 10,``                            ``2, 3, 1, 0, 20 };``    ``int` `k = 4;``    ``int` `sum = 18;` `    ``int` `n = arr.Length;` `    ``if` `(checkSubarraySum(arr, n, k, sum))``        ``Console.WriteLine(``"YES"``);``    ``else``        ``Console.WriteLine(``"NO"``);``}``}` `// This code is contributed``// by mits`

## PHP

 ``

## Javascript

 ``
Output:
`YES`

Time Complexity: O(n * k)
An efficient solution is to check sliding window technique and simultaneously check if the sum is equal to the given sum.

## C++

 `// CPP program to check if any Subarray of size``// K has a given Sum``#include ``using` `namespace` `std;` `// Function to check if any Subarray of size K``// has a  given Sum``bool` `checkSubarraySum(``int` `arr[], ``int` `n,``                      ``int` `k, ``int` `sum)``{``    ``// Check for first window``    ``int` `curr_sum = 0;``    ``for` `(``int` `i=0; i

## Java

 `// Java program to check if any Subarray of size``// K has a given Sum` `class` `GFG{``// Function to check if any Subarray of size K``// has a given Sum``static` `boolean` `checkSubarraySum(``int``[] arr, ``int` `n,``                    ``int` `k, ``int` `sum)``{``    ``// Check for first window``    ``int` `curr_sum = ``0``;``    ``for` `(``int` `i=``0``; i

## Python3

 `# Python3 program to check if any``# Subarray of size K has a given Sum` `# Function to check if any Subarray``# of size K has a given Sum``def` `checkSubarraySum(arr, n,``                     ``k, sumV):``    ``# Check for first window``    ``curr_sum ``=` `0``    ``for` `i ``in` `range``(``0``, k):``        ``curr_sum ``+``=` `arr[i]``    ``if` `(curr_sum ``=``=` `sumV):``        ``return` `true` `    ``# Consider remaining blocks``    ``# ending with j``    ``for` `j ``in` `range``(k, n):``        ``curr_sum ``=` `(curr_sum ``+` `arr[j] ``-``                               ``arr[j ``-` `k])``        ``if` `(curr_sum ``=``=` `sumV) :``            ``return` `True`   `    ` `    ``return` `False` `# Driver code``arr ``=` `[ ``1``, ``4``, ``2``, ``10``, ``2``,``        ``3``, ``1``, ``0``, ``20` `]``k ``=` `4``sumV ``=` `18` `n ``=` `len``(arr)` `if` `(checkSubarraySum(arr, n, k, sumV)):``    ``print``(``"YES"``)``else``:``    ``print``( ``"NO"``)` `# This code is contributed``# by Yatin Gupta`

## C#

 `// C# program to check if any Subarray of size``// K has a given Sum``using` `System;` `class` `GFG{``// Function to check if any Subarray of size K``// has a given Sum``static` `bool` `checkSubarraySum(``int``[] arr, ``int` `n,``                    ``int` `k, ``int` `sum)``{``    ``// Check for first window``    ``int` `curr_sum = 0;``    ``for` `(``int` `i=0; i

## PHP

 ``

## Javascript

 ``
Output:
`YES`

Time Complexity: O(n)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up