给定一个二进制数组,找到一个连续的0和1相等的最大子数组。

来源:互联网 发布:bp神经网络算法流程图 编辑:程序博客网 时间:2024/05/21 15:01

本题源自leetcode  525

--------------------------------------------------------------------

思路:

1 用一个map 做映射 记录0 1 的数出现次数的差,值为数组下标。初始化mp[0] = -1;

代码:

 int findMaxLength(vector<int>& nums) {        int n = nums.size();        if(n == 0)            return 0;        unordered_map<int,int> mp;  //记录 0 和 1的差值,以及下标 。        mp[0] = -1;        int one = 0;        int zero = 0;        int len  = 0;        for(int i = 0; i < n;i++){            if(nums[i] == 0)                zero++;            else                one++;            if(mp.count(zero - one)){                len = max(len,i - mp[zero - one]);            }else                mp[zero - one] = i;        }        return len;    }


阅读全文
0 0
原创粉丝点击