题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bb23185fb0032215df52d387547b71a7.png)
解题思路
第一反映是前缀和,但是双重循环超时了。看到评论区的思路是将0看作是-1,虽然仍然是前缀和的思想,但是前缀和数组从非降序变为了有正有负,所以一次遍历即可。
利用哈希表每次记录第一次遇到的前缀和所对应的下标,如果遇到同一个前缀和两次,就说明两个前缀和之间的区间中0、1个数是相等的(因为两者前缀和相减为0)
初始化时候,map[0] = -1,这样就保证了如果[0, i]区间中的数值已经满足了要求,其长度也会被记录进去
代码实现
from collections import defaultdict
class Solution:
def findMaxLength(self