【leetcode】3201. 找出有效子序列的最大长度(1)
文章目录
- 题目
- 题解
题目
3201. 找出有效子序列的最大长度(1)
给你一个整数数组 nums。
nums 的子序列 sub 的长度为 x ,如果其满足以下条件,则称其为 有效子序列:
(sub[0] + sub[1]) % 2 == (sub[1] + sub[2]) % 2 == … == (sub[x - 2] + sub[x - 1]) % 2
返回 nums 的 最长的有效子序列 的长度。
一个 子序列 指的是从原数组中删除一些元素(也可以不删除任何元素),剩余元素保持原来顺序组成的新数组。
示例 1:
输入: nums = [1,2,3,4]
输出: 4
解释:
最长的有效子序列是 [1, 2, 3, 4]。
示例 2:
输入: nums = [1,2,1,1,2,1,2]
输出: 6
解释:
最长的有效子序列是 [1, 2, 1, 2, 1, 2]。
示例 3:
输入: nums = [1,3]
输出: 2
解释:
最长的有效子序列是 [1, 3]。
题解
class Solution(object):def maximumLength(self, nums):""":type nums: List[int]:rtype: int"""# 全偶,全奇,奇偶交替odd, even = 0, 0pre = nums[0]ans = 1for i in range(0, len(nums)):if nums[i] % 2: # 子序列全为奇数odd += 1else: # 子序列全为偶数even += 1# 模为1的情况,子序列奇偶交替的情况if i >= 1 and (nums[i] + pre) % 2 == 1:ans += 1pre = nums[i]return max(ans, odd, even)