题目要求返回所有交替子数组的最长长度,我们可以使用双层循环。外层循环遍历数组每一个的下标,使其作为交替子数组的第一个下标firstIndex。内层循环则从firstIndex往后遍历,判断接下来的元素是否满足交替子数组的条件。如果是那么更新最长长度,不马努的话就跳出内层循环,继续外层循环。外层遍历完成后,返沪最长长度。
class Solution:
def alternatingSubarray(self, nums: List[int]) -> int:
res = -1
n = len(nums)
for firstIndex in range(n):
for i in range(firstIndex + 1, n):
length = i - firstIndex + 1
if nums[i] - nums[firstIndex] == (length - 1) % 2:
res = max(res, length)
else:
break
return res