VOOZH about

URL: https://www.geeksforgeeks.org/dsa/count-strictly-increasing-subarrays/

⇱ Count Strictly Increasing Subarrays - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Count Strictly Increasing Subarrays

Last Updated : 9 Apr, 2026

Given an integer array arr[], count the number of subarrays in arr[] that are strictly increasing and have a size of at least 2. A subarray is a contiguous sequence of elements from arr[]. A subarray is strictly increasing if each element is greater than its previous element.

Examples:

Input: arr[] = [1, 4, 5, 3, 7, 9]
Output: 6
Explanation: The strictly increasing subarrays are: [1, 4], [1, 4, 5], [4, 5], [3, 7], [3, 7, 9], [7, 9]

Input: arr[] = [1, 3, 3, 2, 3, 5]
Output: 4
Explanation: The strictly increasing subarrays are: [1, 3], [2, 3], [2, 3, 5], [3, 5]

Input: arr[] = [2, 2, 2, 2]
Output: 0
Explanation: No strictly increasing subarray exists.

[Naive Approach] Check All Subarrays - O(n^2) Time and O(1) Space

Count all strictly increasing subarrays by starting from each index i and expanding forward. For every starting point, we use another pointer j to extend the subarray as long as the elements keep increasing. As soon as the increasing order breaks, we stop extending from that starting point and move to the next index.


Output
6

[Expected Approach] Using Subarray Count Formula - O(n) Time and O(1) Space

We can do only with a single pass. Instead of checking every subarray explicitly, we track the length of increasing segments using len. When a decreasing element is encountered, we use the formula (len * (len - 1)) / 2 to count subarrays formed by the segment and then reset len. Finally, we add the remaining subarrays after the loop ends.

Steps to implement the above idea:

  • Initialize count to store the number of strictly increasing subarrays and len to track the length of increasing sequences.
  • Iterate through the array starting from index 1, comparing each element with its previous element to check for increasing order.
  • If the current element is greater than the previous, increment len as it extends the increasing subarray.
  • If the current element breaks the increasing sequence, update count using the formula (len*(len-1))/2 and reset len to 1.
  • Continue iterating until the end of the array, applying the same logic for each increasing and non-increasing sequence.
  • After the loop, add the remaining subarrays count using (len * (len - 1)) / 2 to include the last segment.
  • Finally, return count, which holds the total number of strictly increasing subarrays in the given array.

Output
6
Comment
Article Tags:
Article Tags: