📅  最后修改于: 2023-12-03 15:41:16.923000             🧑  作者: Mango
本题要求编写一个函数,输入一个由正整数构成的数组,返回数组中两个相邻的偶数之间的最大距离(也就是这两个偶数之间其他数的个数,包括这两个偶数)。
数组大小 $n$,以及 $n$ 个正整数,用空格隔开。
一个整数,表示数组中两个偶数之间的最大距离。如果数组中没有相邻的偶数,则输出 -1。
6 1 2 5 6 3 4
3
样例输入中,数组中有两个相邻的偶数 $2$ 和 $6$,它们之间的距离是 $3$。
2 1 5
-1
样例输入中,数组中没有相邻的偶数,因此输出 -1。
要找到数组中相邻的两个偶数之间的距离,需要一边遍历数组,一边保存上一个偶数出现的位置。具体地,可以使用一个变量 $lastEven$ 记录数组中上一个偶数出现的位置,初始值为 $-1$。然后遍历数组,如果遇到一个偶数,则更新答案,即将当前偶数位置与 $lastEven$ 的差与当前答案取一个较大值。然后将 $lastEven$ 更新为当前偶数的位置。最终,如果答案仍然等于初始值 $-1$,则说明没有相邻的偶数。
def max_distance(n, nums):
ans = -1
last_even = -1
for i in range(n):
if nums[i] % 2 == 0:
if last_even != -1:
ans = max(ans, i - last_even)
last_even = i
return ans
# 测试代码
n = 6
nums = [1, 2, 5, 6, 3 ,4]
print(max_distance(n, nums)) # 3
遍历一遍数组,时间复杂度 $O(n)$,使用两个变量 $ans$ 和 $lastEven$,空间复杂度 $O(1)$。