diff --git a/cs/count-subarrays-with-fixed-bounds.cs b/cs/count-subarrays-with-fixed-bounds.cs new file mode 100644 index 0000000..7a58024 --- /dev/null +++ b/cs/count-subarrays-with-fixed-bounds.cs @@ -0,0 +1,28 @@ +public class Solution { + public long CountSubarrays(int[] nums, int minK, int maxK) { + long count = 0; + var (minIdx, maxIdx) = (-1, -1); + + for (int i = 0, j = 0; j < nums.Length; ++j) { + var x = nums[j]; + + // is not bounded + if (x < minK || x > maxK) { + i = j + 1; + continue; + } + + if (x == minK) { + minIdx = j; + } + + if (x == maxK) { + maxIdx = j; + } + + count += Math.Max(0, Math.Min(minIdx, maxIdx) - i + 1); + } + + return count; + } +}