Given an array of N integers and a number K, the task is to find the number of subarrays such that all elements are greater than K in it.
Examples:
Input: a[] = {3, 4, 5, 6, 7, 2, 10, 11}, K = 5
Output: 6
The possible subarrays are {6}, {7}, {6, 7}, {10}, {11} and {10, 11}.Input: a[] = {8, 25, 10, 19, 19, 18, 20, 11, 18}, K = 13
Output: 12
Approach: The idea is to start traversing the array using a counter. If the current element is greater than the given value X, increment the counter otherwise add counter*(counter+1)/2 to the number of subarrays and reinitialize counter to 0.
Below is the implementation of the above approach:
C++
// C++ program to print the number of subarrays such // that all elements are greater than K #include <bits/stdc++.h> using namespace std; // Function to count number of subarrays int countSubarrays( int a[], int n, int x) { int count = 0; int number = 0; // Iterate in the array for ( int i = 0; i < n; i++) { // check if array element // greater than X or not if (a[i] > x) { count += 1; } else { number += (count) * (count + 1) / 2; count = 0; } } // After iteration complete // check for the last set of subarrays if (count) number += (count) * (count + 1) / 2; return number; } // Driver Code int main() { int a[] = { 3, 4, 5, 6, 7, 2, 10, 11 }; int n = sizeof (a) / sizeof (a[0]); int k = 5; cout << countSubarrays(a, n, k); return 0; } |
Java
// Java program to print the number of subarrays such // that all elements are greater than K import java.io.*; class GFG { // Function to count number of subarrays static int countSubarrays( int a[], int n, int x) { int count = 0 ; int number = 0 ; // Iterate in the array for ( int i = 0 ; i < n; i++) { // check if array element // greater than X or not if (a[i] > x) { count += 1 ; } else { number += (count) * (count + 1 ) / 2 ; count = 0 ; } } // After iteration complete // check for the last set of subarrays if (count!= 0 ) number += (count) * (count + 1 ) / 2 ; return number; } // Driver Code public static void main (String[] args) { int a[] = { 3 , 4 , 5 , 6 , 7 , 2 , 10 , 11 }; int n = a.length; int k = 5 ; System.out.println (countSubarrays(a, n, k)); } } |
Python3
# Python program to print the number of # subarrays such that all elements are # greater than K # Function to count number of subarrays def countSubarrays(a, n, x): count = 0 number = 0 # Iterate in the array for i in range (n): # check if array element greater # then X or not if (a[i] > x): count + = 1 else : number + = (count) * (count + 1 ) / 2 count = 0 # After iteration complete check for # the last set of subarrays if (count): number + = (count) * (count + 1 ) / 2 return int (number) # Driver Code if __name__ = = '__main__' : a = [ 3 , 4 , 5 , 6 , 7 , 2 , 10 , 11 ] n = len (a) k = 5 print (countSubarrays(a, n, k)) # This code is contributed by 29AjayKumar |
C#
// C# program to print the number of subarrays such // that all elements are greater than K using System; class GFG { // Function to count number of subarrays static int countSubarrays( int []a, int n, int x) { int count = 0; int number = 0; // Iterate in the array for ( int i = 0; i < n; i++) { // check if array element // greater than X or not if (a[i] > x) { count += 1; } else { number += (count) * (count + 1) / 2; count = 0; } } // After iteration complete // check for the last set of subarrays if (count!=0) number += (count) * (count + 1) / 2; return number; } // Driver Code public static void Main () { int []a = { 3, 4, 5, 6, 7, 2, 10, 11 }; int n = a.Length; int k = 5; Console.WriteLine(countSubarrays(a, n, k)); } } // This code is contributed by anuj_67.. |
PHP
<?php // PHP program to print the number // of subarrays such that all // elements are greater than K // Function to count number // of subarrays function countSubarrays( $a , $n , $x ) { $count = 0; $number = 0; // Iterate in the array for ( $i = 0; $i < $n ; $i ++) { // check if array element // greater than X or not if ( $a [ $i ] > $x ) { $count += 1; } else { $number += ( $count ) * ( $count + 1) / 2; $count = 0; } } // After iteration complete // check for the last set // of subarrays if ( $count ) $number += ( $count ) * ( $count + 1) / 2; return $number ; } // Driver Code $a = array (3, 4, 5, 6, 7, 2, 10, 11); $n = count ( $a ); $k = 5; echo countSubarrays( $a , $n , $k ); // This code is contributed by anuj_67 ?> |
Javascript
<script> // javascript program to print the number of subarrays such // that all elements are greater than K // Function to count number of subarrays function countSubarrays(a , n , x) { var count = 0; var number = 0; // Iterate in the array for (i = 0; i < n; i++) { // check if array element // greater than X or not if (a[i] > x) { count += 1; } else { number += (count) * (count + 1) / 2; count = 0; } } // After iteration complete // check for the last set of subarrays if (count != 0) number += (count) * (count + 1) / 2; return number; } // Driver Code var a = [ 3, 4, 5, 6, 7, 2, 10, 11 ]; var n = a.length; var k = 5; document.write(countSubarrays(a, n, k)); // This code is contributed by todaysgaurav </script> |
6
Complexity Analysis:
- Time Complexity: O(N)
- Auxiliary Space: O(1)
Related Topic: Subarrays, Subsequences, and Subsets in Array
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!