Easy
You are given a 0-indexed integer array nums and an integer threshold.
Find the length of the longest subarray of nums starting at index l and ending at index r (0 <= l <= r < nums.length) that satisfies the following conditions:
nums[l] % 2 == 0i in the range [l, r - 1], nums[i] % 2 != nums[i + 1] % 2i in the range [l, r], nums[i] <= thresholdReturn an integer denoting the length of the longest such subarray.
Note: A subarray is a contiguous non-empty sequence of elements within an array.
Example 1:
Input: nums = [3,2,5,4], threshold = 5
Output: 3
Explanation:
In this example, we can select the subarray that starts at l = 1 and ends at r = 3 => [2,5,4]. This subarray satisfies the conditions.
Hence, the answer is the length of the subarray, 3. We can show that 3 is the maximum possible achievable length.
Example 2:
Input: nums = [1,2], threshold = 2
Output: 1
Explanation:
In this example, we can select the subarray that starts at l = 1 and ends at r = 1 => [2].
It satisfies all the conditions and we can show that 1 is the maximum possible achievable length.
Example 3:
Input: nums = [2,3,4,5], threshold = 4
Output: 3
Explanation:
In this example, we can select the subarray that starts at l = 0 and ends at r = 2 => [2,3,4].
It satisfies all the conditions. Hence, the answer is the length of the subarray, 3. We can show that 3 is the maximum possible achievable length.
Constraints:
1 <= nums.length <= 1001 <= nums[i] <= 1001 <= threshold <= 100class Solution {
    fun longestAlternatingSubarray(nums: IntArray, threshold: Int): Int {
        var maxLength = 0
        var i = 0
        while (i < nums.size) {
            if (nums[i] % 2 == 0 && nums[i] <= threshold) {
                var length = 1
                var j = i + 1
                while (j < nums.size &&
                    nums[j] <= threshold &&
                    nums[j] % 2 != nums[j - 1] % 2
                ) {
                    length++
                    j++
                }
                maxLength = maxLength.coerceAtLeast(length)
                i = j - 1
            }
            i++
        }
        return maxLength
    }
}