Count subarrays with all elements greater than K

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 subarraysint 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 Codeint 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 subarraysdef 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 Codeif __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 subarraysfunction 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 zambiatek!



