从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

以上是 从Python中的给定列表中查找最长交替子序列的长度的程序 的全部内容, 来源链接: utcz.com/z/334640.html

回到顶部