给定一个二进制数组, 找到含有相同数量的 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

最新文章

  1. 泛型-List&lt;T&gt;
  2. 一个简单的物料防错DEMO
  3. Day Two(Beta)
  4. C#页面前台绑定数据 &lt;%%&gt;&lt;%#%&gt;&lt;%=%&gt;
  5. Intrinsics头文件与SIMD指令集、Visual Studio版本对应表(转)
  6. 【XJOI-NOIP16提高模拟训练9】题解。
  7. FTP被动模式无法被传统CDN模式加速
  8. C 猜数游戏
  9. 05-0. 求序列前N项和(15)
  10. python 网络编程第一版
  11. UE4的编程C++创建一个FPSproject(两)角色网格、动画、HUD、子弹类
  12. 【原创】纯OO:从设计到编码写一个FlappyBird (一)
  13. Linux下一些命令
  14. 自定义Django的中间件
  15. Centos 7.0 execute yum update ——File &quot;/usr/libexec/urlgrabber-ext-down&quot;, line 75, in &lt;module&gt; 解决方式
  16. 每个前端开发者必会的 20 个 JavaScript 面试题
  17. POJ-1573 Robot Motion模拟
  18. WebService-----Xfire
  19. 在docker中安装mysql
  20. Confluence 6 配置自动备份

热门文章

  1. 【2】按照Django官网,创建一个web app 创建app/创建相应的数据库表
  2. diamond简介和使用
  3. var和let的区别(详解)
  4. HDU 6113 度度熊的01世界 【DFS】(2017&quot;百度之星&quot;程序设计大赛 - 初赛(A))
  5. Random 类生成随机数
  6. regmap使用介绍【转】
  7. HDU1532 Drainage Ditches —— 最大流(sap算法)
  8. 机器学习 Hidden Markov Models 2
  9. [Selenium] Android HTML5 中 Application Cache
  10. [Selenium] Automation Test Manual(Selenium)