3392. Count Subarrays of Length Three With a Condition
Description
Given an integer array nums, return the number of subarrays of length 3 such that the sum of the first and third numbers equals exactly half of the second number.
Example 1:
Input: nums = [1,2,1,4,1]
Output: 1
Explanation:
Only the subarray [1,4,1] contains exactly 3 elements where the sum of the first and third numbers equals half the middle number.
Example 2:
Input: nums = [1,1,1]
Output: 0
Explanation:
[1,1,1] is the only subarray of length 3. However, its first and third numbers do not add to half the middle number.
Constraints:
3 <= nums.length <= 100-100 <= nums[i] <= 100
Solutions
Solution 1: Single Pass
Thinking
A length-\(3\) subarray is counted when twice the sum of the wings equals the middle. With \(n \le 100\) we enumerate the middle index.
For each \(i \in [1,n-2]\) we test \((nums[i-1]+nums[i+1])\times 2 = nums[i]\) and count the successes.
We traverse each subarray of length \(3\) in the array \(\textit{nums}\) and check if twice the sum of the first and third numbers equals the second number. If it does, we increment the answer by \(1\).
After traversing, we return the answer.
The time complexity is \(O(n)\), where \(n\) is the length of the array \(\textit{nums}\). The space complexity is \(O(1)\).
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 | |