<p>Given an array of integers <code>arr</code> and two integers <code>k</code> and <code>threshold</code>, return <em>the number of sub-arrays of size </em><code>k</code><em> and average greater than or equal to </em><code>threshold</code>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4
<strong>Output:</strong> 3
<strong>Explanation:</strong> Sub-arrays [2,5,5],[5,5,5] and [5,5,8] have averages 4, 5 and 6 respectively. All other sub-arrays of size 3 have averages less than 4 (the threshold).
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> arr = [11,13,17,23,29,31,7,5,2,3], k = 3, threshold = 5
<strong>Output:</strong> 6
<strong>Explanation:</strong> The first 6 sub-arrays of size 3 have averages greater than 5. Note that averages are not integers.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= arr.length &lt;= 10<sup>5</sup></code></li>
	<li><code>1 &lt;= arr[i] &lt;= 10<sup>4</sup></code></li>
	<li><code>1 &lt;= k &lt;= arr.length</code></li>
	<li><code>0 &lt;= threshold &lt;= 10<sup>4</sup></code></li>
</ul>

# class Solution:
#     def numOfSubarrays(self, arr: List[int], k: int, threshold: int) -> int:
#         arr1 = []
#         l = 0
#         r = k-1
#         while(r<len(arr)):
#             arr2 = []
#             for i in range(l,r+1):
#                 arr2.append(arr[i])
#             sum1 = 0
#             for j in arr2:
#                 sum1 += j
#             if sum1/k >= threshold:
#                 arr1.append(arr2)
#             l+=1
#             r+=1
#         return len(arr1)


class Solution:
    def numOfSubarrays(self, arr: List[int], k: int, threshold: int) -> int:
        count = 0
        current_sum = sum(arr[:k])  # Sum of the first 'k' elements
        
        # Calculate the target threshold sum
        threshold_sum = threshold * k
        
        # Check if the sum of the first 'k' elements is greater than or equal to the threshold sum
        if current_sum >= threshold_sum:
            count += 1
        
        # Sliding window: slide the window over the rest of the array
        for i in range(k, len(arr)):
            # Update the current sum by removing the element leaving the window
            # and adding the new element entering the window
            current_sum += arr[i] - arr[i - k]
            
            # Check if the updated sum meets or exceeds the threshold sum
            if current_sum >= threshold_sum:
                count += 1
        
        return count

423