zoukankan      html  css  js  c++  java
  • 525 Contiguous Array 连续数组

    给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组。
    示例 1:
    输入: [0,1]
    输出: 2
    说明: [0, 1] 是具有相同数量0和1的最长连续子数组。

    示例 2:
    输入: [0,1,0]
    输出: 2
    说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。
    注意: 给定的二进制数组的长度不会超过50000。
    详见:https://leetcode.com/problems/contiguous-array/description/

    Java实现:

    class Solution {
        public int findMaxLength(int[] nums) {
            int res=0;
            int n=nums.length;
            int sum=0;
            Map<Integer,Integer> m=new HashMap<Integer,Integer>();
            m.put(0,-1);
            for(int i=0;i<n;++i){
                sum+=(nums[i]==1)?1:-1;
                if(m.containsKey(sum)){
                    res=Math.max(res,(i-m.get(sum)));
                }else{
                    m.put(sum,i);
                }
            }
            return res;
        }
    }
    

    C++实现:

    class Solution {
    public:
        int findMaxLength(vector<int>& nums) 
        {
            int res = 0, n = nums.size(), sum = 0;
            unordered_map<int, int> m{{0, -1}};
            for (int i = 0; i < n; ++i)
            {
                sum += (nums[i] == 1) ? 1 : -1;
                if (m.count(sum))
                {
                    res = max(res, i - m[sum]);
                }
                else 
                {
                    m[sum] = i;
                }
            }
            return res;
        }
    };
    

     参考:http://www.cnblogs.com/grandyang/p/6529857.html

  • 相关阅读:
    顺序查找
    折半查找
    KMP
    php长时间的脚本,报502
    AcWing 27. 数值的整数次方
    acwing 25. 剪绳子
    Best Cow Line <挑战程序设计竞赛> 习题 poj 3617
    acwing 23. 矩阵中的路径
    AcWing 34. 链表中环的入口结点
    AcWing 33. 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8909259.html
Copyright © 2011-2022 走看看