在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 = max(i + 1,max_diff)
if cs in table:
max_diff = max(max_diff,i-table [cs])
否则:
table [cs] = i
返回max_diff
ob = Solution()
nums = [1,1,-1,1,1,-1,1,-1,1,-1]
print(ob.solve(nums))
输入
[1, 1, -1, 1, 1, -1, 1, -1, 1, -1]
产量
8