[leetcode]525. Contiguous Array

来源:互联网 发布:收入词典的网络词语 编辑:程序博客网 时间:2024/05/10 02:40

题目链接:https://leetcode.com/problems/contiguous-array/#/description


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.
思路:题意是 给定一个只含有0,1的整数数组,找到数组中最长的一个子序列,该序列中1的个数和0的个数相同。

         0和1的数组,可以考虑吧0换成-1  ,变成1 和-1 的数组,那么本质上就是找是有下标从i-j的总和为0的子数组。

         然后存储一个hashmap用来存放sum,如果接下来的sum在hashmap里面出现过,则说明hashmap里面出现的那个值的索引的开始(不包括索     引),到目前的索引的和为0。


class Solution{public:    int findMaxLength(vector<int>& nums)    {        int sum=0,result=0;        vector<int> res(nums.size()+1,0);        for(int i=0;i<nums.size();i++)        {            if(nums[i]==0)                nums[i]=-1;        }        unordered_map<int,int> m;        m[0]=-1;        for(int i=0;i<nums.size();i++)        {            sum+=nums[i];            if(m.find(sum)!=m.end())                result=max(result,i-m[sum]);            else                m[sum]=i;        }        return result;    }};




0 0
原创粉丝点击