1. 题目

给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。

示例 1:
输入: [0,1]
输出: 2
说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:
输入: [0,1,0]
输出: 2
说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contiguous-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 560. 和为K的子数组(前缀和差分)
LeetCode 1248. 统计「优美子数组」(要复习)

  • 把0看成-1,找和为0的最长长度,跟560题差不多
  • 记录前缀和,第一次出现时,存入map,记录下标
  • 第二次出现时,做差,中间的长度就是和为0的区间
class Solution {public:int findMaxLength(vector<int>& nums) {int i, n = nums.size(), sum = 0, maxlen = 0;unordered_map<int,int> m;//sum, 第一次出现sum时的idxm[0] = -1;for(i = 0; i < n; ++i){if(nums[i])sum += 1;elsesum -= 1;if(!m.count(sum))m[sum] = i;elsemaxlen = max(maxlen, i-m[sum]);}return maxlen;}
};

344 ms 78.5 MB

LeetCode 525. 连续数组(前缀和+哈希)相关推荐

  1. LeetCode 525 连续数组/剑指 Offer II 011. 0 和 1 个数相同的子数组

    题目链接:525. 连续数组 思路:前缀和+哈希表 由于「0 和 1 的数量相同」等价于「1 的数量减去 0 的数量等于 0」,我们可以将数组中的 0 视作 -1,则原问题转换成「求最长的连续子数组, ...

  2. leetcode 525. 连续数组

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

  3. LeetCode-笔记-525. 连续数组

    LeetCode-笔记-525. 连续数组 6月份第三天前缀和了 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度. 示例 1: 输入: num ...

  4. leetcode 525. Contiguous Array | 525. 连续数组(Java)

    题目 https://leetcode.com/problems/contiguous-array/ 题解 想到了这个题,不过和本题没什么关系,仅仅是想到了而已: https://leetcode.c ...

  5. 文巾解题 525. 连续数组

    1 题目描述 2 解题思路 方便起见,我们将0~1数组看成-1~1数组. 什么时候子数组中-1和1的数量相同呢?那就是这个子数组里面的数字之和为0,此时所有的-1和1两两抵消了. 那么我们就想到前缀和 ...

  6. 【LeetCode刷题记录】LeetCode经典题目数组求和及哈希表的使用!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 LeetCode题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整 ...

  7. Leetcode525.连续数组(又是连续之类的题目,结合前缀和)

    题目: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度. 示例 1: 输入: nums = [0,1] 输出: 2 说明: [0, 1] 是具 ...

  8. LeetCode 659. 分割数组为连续子序列

    LeetCode 659. 分割数组为连续子序列 回顾 根据题意,每个元素只会涉及两种情况: 已经存在nums[i]-1结尾的序列,我们把nums[i]接到之前的某个序列后. 尝试以nums[i]为头 ...

  9. Leetcode 1043.分隔数组以达到最大和

    Time: 20190907 Type: Medium 题目描述 出整数数组 A,将该数组分隔为长度最多为 K 的几个(连续)子数组.分隔完成后,每个子数组的中的值都会变为该子数组中的最大值. 返回给 ...

最新文章

  1. 第九章:路由网关(Zuul)的使用
  2. ListView优化的代码
  3. 网站建设技术――智能建站系统
  4. 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...
  5. 九十年代以来的文学事变与60后70后80后作家的写作之一
  6. NIO流程记录(非源码,单reacter单线程)
  7. webRTC之智能指针std::unique_ptr::reset()使用(十四)
  8. Nginx ssl证书部署方法
  9. Spring Cloud Alibaba Sentinel之流控规则篇
  10. LINGO11 百度网盘
  11. H3CSE园区-STP
  12. 三菱四节传送带控制梯形图_四节传送带控制
  13. plc仿真实训软件_博途STEP7仿真软件与真实PLC的区别
  14. JSP从入门到精通_课堂实战视频教程
  15. IE5的兼容问题——记录给自己看的
  16. 根据客户的PDF模板,写入签名图和文本,生成新的PDF图片和JPG图片。
  17. 某电商网站Java面试题-2(高级开发,架构级别)
  18. 拜尔滤色拜尔滤色镜_如何在Windows 10上启用滤色器以更清晰地阅读屏幕
  19. java预研项目_缓存java框架技术预研3:JAVA缓存技术介绍
  20. three.js学习笔记(七)——粒子

热门文章

  1. 查看centos中的用户和用户组
  2. Halcon学习笔记(三)---数据类型
  3. Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)
  4. linux内核的I2C子系统详解4——i2c-s3c2410.c文件中的adapter、algorithm
  5. Linux文件属性1——文件类型
  6. 工单更改历史记录(轉載)
  7. Javascript实现合并单元格
  8. 什么是域名服务器(DNS)
  9. Gmail的另类浏览法--RSS
  10. 分享一个剪切板的小软件CopyQ