525. 连续数组

Posted ai52learn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了525. 连续数组相关的知识,希望对你有一定的参考价值。

给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。

示例 1:

输入: nums = [0,1]
输出: 2
说明: [0, 1] 是具有相同数量0和1的最长连续子数组。
示例 2:

输入: nums = [0,1,0]
输出: 2
说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。

提示:

1 <= nums.length <= 105
nums[i] 不是 0 就是 1

class Solution {
public:
    int findMaxLength(vector<int>& nums) {
        int pre=0,p;
        map<int,int> mp;
        mp[0]=-1;
        int ret = 0;
        for(int i = 0;i<nums.size();++i)
        {
            pre = p = pre+(nums[i]==1?1:-1);
            auto it = mp.find(p);
            if(it!=mp.end())
            {
                ret = max(ret,i-(it->second));
            }
            else
            mp[p] = i;
        }
        return ret;
    }
};

 

以上是关于525. 连续数组的主要内容,如果未能解决你的问题,请参考以下文章

525. 连续数组(前缀和+哈希)

525. 连续数组

每日一题系列-leetcode-525-连续数组

leetcode-525连续数组

LeetCode525. 连续数组 / 牛客:雀魂启动!

力扣P525. 连续数组P523. 连续的子数组和