程序在Python中查找具有至少k个奇数值的最长递增子序列的长度
假设我们有一个称为nums的数字列表,另一个值为k,我们必须找到具有至少k个奇数元素的最长递增子序列的大小。
因此,如果输入像nums=[12、14、16、5、7、8]k=2,则输出将为3,因为具有至少2个奇数值的最长递增子序列为[5、7,8]。
示例
让我们看下面的实现以更好地理解-
class Solution:
def solve(self, nums, k):
best = 0
def dp(i, j, odd, taken):
nonlocal best
if odd >= k:
best = max(best, taken)
if j == len(nums):
return
if nums[j] > nums[i]:
dp(j, j + 1, odd + (nums[j] & 1), taken + 1)
dp(i, j + 1, odd, taken)
for i in range(len(nums)):
dp(i, i + 1, nums[i] & 1, 1)
return best
ob = Solution()
nums = [12, 14, 16, 5, 7, 8]
k = 2
print(ob.solve(nums, k))输入值
[12, 14, 16, 5, 7, 8], 2输出结果
3
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短