- [Leetcode 3201. Find the Maximum Length of Valid Subsequence I](#Leetcode 3201. Find the Maximum Length of Valid Subsequence I)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题我们注意到,要使得条件成立,那么选择出来的数列在奇数位和偶数位上的数字奇偶性必然相同,因此,我们只需要讨论以下4种情况就行了:
- 全为奇数
- 全为偶数
- 先奇数后偶数
- 先偶数后奇数
我们分别讨论一下这四种情况然后取出最大值即可。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def maximumLength(self, nums: List[int]) -> int:
n = len(nums)
n1 = len([x for x in nums if x % 2 == 0])
n2 = len([x for x in nums if x % 2 == 1])
n3, tgt = 0, 0
for x in nums:
if x % 2 == tgt:
n3 += 1
tgt = 1-tgt
n4, tgt = 0, 1
for x in nums:
if x % 2 == tgt:
n4 += 1
tgt = 1-tgt
return max(n1, n2, n3, n4)
提交代码评测得到:耗时632ms,占用内存39.6MB。