📅  最后修改于: 2023-12-03 15:40:17.293000             🧑  作者: Mango
问题描述:给定一个整数数组,找出其中最长的仅由偶数或仅由奇数组成的子数组,并返回该子数组中的最大元素。
例如,给定数组[2,3,6,7,8,10]
,最长的仅由偶数或仅由奇数组成的子数组是[2]
或[3,6,7]
或[8,10]
,这三个子数组中的最大元素分别为2
,7
和10
,因此返回10
。
以下是一个Python实现的例子:
def longest_subarray(arr):
"""
计算数组中最长的仅由偶数或仅由奇数组成的子数组中的最大元素
"""
n = len(arr)
res = []
max_len = 0
for i in range(n):
subarray = [arr[i]]
even = arr[i] % 2 == 0
for j in range(i+1, n):
if arr[j] % 2 == 0 and even or arr[j] % 2 != 0 and not even:
subarray.append(arr[j])
else:
break
if len(subarray) > max_len:
max_len = len(subarray)
res = subarray
return max(res)
# 测试
arr = [2,3,6,7,8,10]
print(longest_subarray(arr)) # 输出10
该算法的时间复杂度为$O(n^2)$,其中$n$为数组长度,因为需要枚举所有可能的子数组。