从Python中的给定列表中查找最长交替子序列的长度的程序
假设我们有一个称为nums的数字列表,我们必须找到最长的子序列的大小,其中两个连续数字之间的差在正负之间交替。第一个差异可以是正数或负数。
因此,如果输入类似于nums=[6、10、4、2、3、9、4、7],则输出将为6,因为可能的所需子序列为[6、10、2、9、4,7]和差异为[4,-8、7,-5、3]。
范例(Python)
让我们看下面的实现以更好地理解-
class Solution:
def solve(self, nums):
n = len(nums)
dp = [[1] * 2 for _ in range(n)]
ans = 0
for i in range(n):
for j in range(i):
if nums[j] < nums[i]:
dp[i][0] = max(dp[i][0], dp[j][1] + 1)
elif nums[j] > nums[i]:
dp[i][1] = max(dp[i][1], dp[j][0] + 1)
ans = max(ans, dp[i][0], dp[i][1])
return ans
ob = Solution()
nums = [6, 10, 4, 2, 3, 9, 4, 7]
print(ob.solve(nums))输入值
[6, 10, 4, 2, 3, 9, 4, 7]输出结果
6
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短