在Python中找到和为0的最长子列表的长度

在Python中找到和为0的最长子列表的长度

假设我们有一个仅包含值为1和-1的列表。我们必须找到和为0的最长子列表的长度。

因此,如果输入为 nums = [1,1,-1,1,1,-1,1,-1,1,-1 ],则输出将为8,最长子列表为[ -1,1,1,-1,1,-1,1,-1 ],和为0。

为了解决这个问题,我们将按照以下步骤进行-

  • 表:=一个新的空映射

  • cs:=0,max_diff:=0

  • 对于i在范围0到nums的大小-1之间,执行

    • cs:=cs + nums [i]

    • 如果cs与0相同,则

      • max_diff:= i + 1和max_diff中的最大值
    • 如果cs在表中,则
      • max_diff:= max_diff和(i-table [cs])中的最大值
    • 否则,
      • table [cs]:= i
  • 返回max_diff

让我们看一下以下实现,以获得更好的理解 –

更多Python相关文章,请阅读:Python 教程

例子

class Solution
   def solve(self, nums)
      table = {}
      cs = 0
      max_diff = 0
      for i in range(len(nums))
         cs + = nums [i]
         if cs == 0
            max_diff = maxi + 1max_diff
         if cs in table
            max_diff = maxmax_diffi-table [cs]
         否则:
            table [cs] = i
      返回max_diff
ob = Solution()
nums = [11-111-11-11-1]
printob.solvenums))
Python

输入

[1, 1, -1, 1, 1, -1, 1, -1, 1, -1]
Python

产量

8
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册