Be the first user to complete this post

  • 0
Add to List
Medium

In an Array, find the Smallest Subarray with Sum Greater than the Given Value

Objective: Given an array and an integer, find the smallest subarray whose sum is greater than the given integer.

Examples:

arrA[] = { 1, 5, 20, 70, 8}
Integer = 97
Output : Min Length = 3 Subarray = [20, 70, 8]

 
arrA[] = { 1, 10, 3, 40, 18}
Integer = 50
Output : Min Length = 2 Subarray = [40, 18]

Approach:

Naive Approach: Use 2 loops. Time Complexity - O(n2).

Better Approach: Time Complexity - O(n)

  • Initialize minLength = length of the array and say the given integer is x.
  • Take variables currSum = 0, start = 0
  • Do the linear scan in an array and start adding each element to the currSum.
  • if currSum > x then start subtracting elements from the start.(currSum-arrA[start]) check the length of the subarray, if it is less than the minLength (currentIndex-start<minLength)update minLength and store the current index and start index for finding the subarray.

Code:


Output:

Min length of subarray to get 50 is : 2
SubArray is:   40   18



Also Read: