每日一题:Leetcode525.连续数组

题目描述:

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

示例 1:

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

示例 2:

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

思路:将题目中0化成-1,求最长连续数组即求最长子数组为0的数组,和上一篇文章一样,哈希表中记录最早的子数组和的下标,如果当前位置的和在哈希表中存在,则能求出其长度

代码:

class Solution {
public:
    int findMaxLength(vector& nums) {
        unordered_map hash;
        hash[0]=-1;
        int sum=0,ret=0;
        for(int i=0;i

你可能感兴趣的:(算法,数据结构,leetcode)