LeetCode-in-Java

2765. Longest Alternating Subarray

Easy

You are given a 0-indexed integer array nums. A subarray s of length m is called alternating if:

Return the maximum length of all alternating subarrays present in nums or -1 if no such subarray exists__.

A subarray is a contiguous non-empty sequence of elements within an array.

Example 1:

Input: nums = [2,3,4,3,4]

Output: 4

Explanation: The alternating subarrays are [3,4], [3,4,3], and [3,4,3,4]. The longest of these is [3,4,3,4], which is of length 4.

Example 2:

Input: nums = [4,5,6]

Output: 2

Explanation: [4,5] and [5,6] are the only two alternating subarrays. They are both of length 2.

Constraints:

Solution

@SuppressWarnings("java:S135")
public class Solution {
    public int alternatingSubarray(int[] nums) {
        int result = -1;
        int previous = 0;
        int sum = 1;
        for (int i = 1; i < nums.length; i++) {
            int diff = nums[i] - nums[i - 1];
            if (Math.abs(diff) != 1) {
                sum = 1;
                continue;
            }
            if (diff == previous) {
                sum = 2;
            }
            if (diff != previous) {
                if (diff != (sum % 2 == 0 ? -1 : 1)) {
                    continue;
                }
                sum++;
                previous = diff;
            }
            result = Math.max(result, sum);
        }
        return result;
    }
}