Count Subarrays Matching a Comparison Pattern
Problem statement
You are given an integer array numbers and a pattern containing only -1, 0, and 1. Each pattern value describes one adjacent comparison: 1 means the next number is greater, 0 means equal, and -1 means smaller.
Return the number of contiguous subarrays of length pattern.length + 1 whose adjacent comparisons exactly match the complete pattern.
Function
countMatchingSubarrays(numbers: int[], pattern: int[]) → intExamples
Example 1
numbers = [1,2,3,4,5,6]pattern = [1,1]return = 4Each length-three window is strictly increasing, so all four candidate windows match.
Example 2
numbers = [1,4,4,1,3,5,5,3]pattern = [1,0,-1]return = 2The windows [1,4,4,1] and [3,5,5,3] increase, remain equal, and then decrease.
Constraints
2 <= numbers.length <= 10^51 <= pattern.length < numbers.length-10^9 <= numbers[i] <= 10^9pattern[i]is-1,0, or1.