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

     1     public int findMaxLength(int[] nums) {
     2 //        这里有一个把0转换成-1来进行计算的过程,然后存储一个hashmap用来存放sum,如果接下来的sum在hashmap里面出现过,
     3 // 则说明hashmap里面出现的那个值的索引的开始(不包括索引),到目前的索引的和为0
     4         for (int i = 0; i < nums.length; i++) {
     5             if (nums[i] == 0) nums[i] = -1;
     6         }
     7 
     8         Map<Integer, Integer> sumToIndex = new HashMap<>();
     9         sumToIndex.put(0, -1);
    10         int sum = 0, max = 0;
    11 
    12         for (int i = 0; i < nums.length; i++) {
    13             sum += nums[i];
    14             if (sumToIndex.containsKey(sum)) {
    15                 max = Math.max(max, i - sumToIndex.get(sum));
    16             }
    17             else {
    18                 sumToIndex.put(sum, i);
    19             }
    20         }
    21 
    22         return max;        
    23     }
  • 相关阅读:
    SSM整合
    SpringMVC学习笔记
    Spring笔记
    Spring之AOP在XML中的配置方法
    Spring之AOP的注解配置
    Mybatis学习笔记
    css学习笔记
    DOM技术
    Javascript学习笔记
    Hive导出复杂数据到csv文件
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7722414.html
Copyright © 2011-2022 走看看