525. Contiguous Array

来源:互联网 发布:人工智能 top10 编辑:程序博客网 时间:2024/06/01 09:53

题目

Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1.

Example 1:

Input: [0,1]Output: 2Explanation: [0, 1] is the longest contiguous subarray with equal number of 0 and 1.

Example 2:

Input: [0,1,0]Output: 2Explanation: [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.

Note: The length of the given binary array will not exceed 50,000.

分析

参考Python O(n) Solution with Visual Explanation的解释,遇到0则-1,遇到1则+1,两个相同的count值之间代表一个具有相等0和1个数的子串,构造map<int,int>保存一个count值和对应的下标,找到相同的count值时相减即得到子串的元素个数,对于count=0进行初始化,由于数组下标从0开始,所以count=0的索引初始化为-1。

class Solution {public:    int findMaxLength(vector<int>& nums) {        map<int,int> index;        int count=0,maxNum=0;        index[0]=-1;        for(int i=0;i<nums.size();++i){            if(nums[i]==0)                count--;            else                count++;            if(index.count(count))                maxNum=max(maxNum,i-index[count]);            else                index[count]=i;        }        return maxNum;    }};


原创粉丝点击