LeetCode in Kotlin

2760. Longest Even Odd Subarray With Threshold

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:

Return 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:

Solution

class 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
    }
}