Python程序:查找列表中符号交替子序列的最大长度


假设我们有一个名为 nums 的数字列表,我们需要找到符号在每个连续数字上翻转的最长子序列的长度。

因此,如果输入类似于 nums = [1, 3, -6, 4, -3],则输出将为 4,因为我们可以选择 [1, -6, 4, -3]。

为了解决这个问题,我们将遵循以下步骤:

  • pos := 0, neg := 0
  • 对于 nums 中的每个 n,执行以下操作:
    • 如果 n < 0,则
      • neg := pos + 1
    • 否则,
      • pos := neg + 1
  • 返回 pos 和 neg 的最大值

让我们查看以下实现以更好地理解:

示例

 在线演示

class Solution:
   def solve(self, nums):
      pos = neg = 0
      for n in nums:
         if n < 0:
            neg = pos + 1
         else:
            pos = neg + 1
      return max(pos, neg)
ob = Solution()
nums = [1, 3, -6, 4, -3]
print(ob.solve(nums))

输入

[1, 3, -6, 4, -3]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

4

更新于: 2020年11月19日

165 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告