zoukankan      html  css  js  c++  java
  • 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.

    本题和maximun size subarray sum equal k比较类似,这里有一个把0转换成-1来进行计算的过程,然后存储一个hashmap用来存放sum,如果接下来的sum在hashmap里面出现过,则说明hashmap里面出现的那个值的索引的开始(不包括索引),到目前的索引的和为0,代码如下:

     1 public class Solution {
     2     public int findMaxLength(int[] nums) {
     3         Map<Integer,Integer> map = new HashMap<Integer,Integer>();
     4         map.put(0,-1);
     5         int sum= 0;
     6         int max = 0;
     7         for(int i=0;i<nums.length;i++){
     8             if(nums[i]==0) nums[i]=-1;
     9             sum+=nums[i];
    10             if(map.containsKey(sum)){
    11                 max = Math.max(max,i-map.get(sum));
    12             }else{
    13                 map.put(sum,i);
    14             }
    15         }
    16         return max;
    17     }
    18 }
  • 相关阅读:
    浅读《构建之法》
    def 和 lamdba的区别
    Numpy和Pandas的区别
    Django:每点击一次就增加行可输入的表格
    F函数和Q函数的作用
    super()的用法
    liunx操作系统
    celery(超详细)
    celery
    FastDFS环境搭建
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6500098.html
Copyright © 2011-2022 走看看