📅  最后修改于: 2023-12-03 15:40:02.703000             🧑  作者: Mango
在一个整数类型的数组中,找出其中连续的偶数元素组成的最长子序列。如果有多个最长子序列,则返回任意一个即可。
给定数组 nums = [1,2,3,4,5,6,7,8]
,则输出 2,4,6,8
。
给定数组 nums = [1,3,5,7]
,则输出空序列。
maxLength
,用来保存最长子序列的长度。startIndex
,用来表示最长子序列的起始下标。count
自增 1。count
和当前最长子序列的长度 maxLength
,如果 count
大于 maxLength
,则更新 maxLength
和 startIndex
。maxLength
和 startIndex
对原数组进行切片,得到最长子序列。下面是 Python 语言实现:
def longest_even_subsequence(nums):
maxLength = 0
startIndex = 0
count = 0
for i in range(len(nums)):
if nums[i] % 2 == 0:
count += 1
else:
if count > maxLength:
maxLength = count
startIndex = i - maxLength
count = 0
if count > maxLength:
maxLength = count
startIndex = len(nums) - maxLength
return nums[startIndex:startIndex+maxLength]