每日一题:Leetcode525.连续数组
2023-12-16 14:39: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的最长连续子数组。
思路:将题目中0化成-1,求最长连续数组即求最长子数组为0的数组,和上一篇文章一样,哈希表中记录最早的子数组和的下标,如果当前位置的和在哈希表中存在,则能求出其长度
代码:
class Solution {
public:
int findMaxLength(vector<int>& nums) {
unordered_map<int,int> hash;
hash[0]=-1;
int sum=0,ret=0;
for(int i=0;i<nums.size();i++)
{
sum+=nums[i]==0?-1:1;
if(hash.count(sum))
ret=max(ret,i-hash[sum]);
else
hash[sum]=i;
}
return ret;
}
};
文章来源:https://blog.csdn.net/m0_73865858/article/details/135031666
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!