|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2021-6-3 16:40 编辑
题目描述:
- 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。
-  
- 示例 1:
- 输入: nums = [0,1]
- 输出: 2
- 说明: [0, 1] 是具有相同数量0和1的最长连续子数组。
- 示例 2:
- 输入: nums = [0,1,0]
- 输出: 2
- 说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。
-  
- 提示:
- 1 <= nums.length <= 105
- nums[i] 不是 0 就是 1
复制代码
- class Solution {
- public:
- int findMaxLength(vector<int>& nums) {
- //前缀和
- map<int, int> store = {{0,-1}};
- int cur = 0, res = 0;
- for(int i = 0; i < nums.size(); i++){
- nums[i] == 0 ? cur-- : cur++;
- if(store.count(cur)){
- res = max(res, i - store[cur]);
- }else{
- store[cur] = i;
- }
- }
- return res;
- }
- };
复制代码
|
|