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 }
  • 相关阅读:
    Python——方法
    Python——类和对象(二)
    Python——类和对象(一)
    Python——函数的高级应用
    Python——函数入门(三)
    Python——函数入门(二)
    Python——函数入门(一)
    Python——序列封包与序列解包
    min(T)方法
    max(T)方法
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6500098.html
Copyright © 2011-2022 走看看