• 525. Contiguous Array


    问题描述:

    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: 2
    Explanation: [0, 1] is the longest contiguous subarray with equal number of 0 and 1.
    

    Example 2:

    Input: [0,1,0]
    Output: 2
    Explanation: [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.

    解题思路:

    遇到这样求自数组的问题以后可以都考虑一下累加和。

    在这里我们也可以用累加和来做:

      遇见1的时候sum++,遇见0的时候sum--

    若此时sum == 0时, 代表从下标为0的数字到现在为止0和1的个数相同,我们可以令ret = i+1

    若此时sum != 0, 我们可以在hash表中前面是否存在和为sum的子数组,若存在,则长度为 i - m[sum] 为当前满足要求的子数组的长度。

    时间复杂度为O(n)空间复杂度为O(n); 

    代码:

    class Solution {
    public:
        int findMaxLength(vector<int>& nums) {
            unordered_map<int, int> m;
            int ret = 0;
            int sum = 0;
            for(int i = 0; i < nums.size(); i++){
                if(nums[i] == 0) sum--;
                else if(nums[i] == 1) sum++;
                if(sum == 0){
                    ret = i+1;
                }else{
                    if(m.count(sum)){
                        ret = max(ret, i - m[sum]);
                    }else{
                        m[sum] = i;
                    }
                }
            }
            return ret;
        }
    };
  • 相关阅读:
    PPT图片
    饥荒Steam相关mod代码
    Ubuntu20.04更换阿里源 source.list文件
    中断处理与进程调度的区别与联系
    原语和系统调用的区别
    立下个flag,这个月底之前要发一个深度学习入门系列的文章
    conda安装skimage
    机器学习入门(三)
    zip安装的MySQL绑定my.ini配置文件
    Anaconda配置安装
  • 原文地址:https://www.cnblogs.com/yaoyudadudu/p/9271907.html
Copyright © 2020-2023  润新知