【前缀和+哈希】LCR_011_连续数组

求解代码

java 复制代码
public int findMaxLength(int[] nums) {

        int ans = 0;
        int sum = 0;

        HashMap<Integer,Integer> hMap = new HashMap<>();

        hMap.put(0, -1);

        for(int i=0;i<nums.length;i++){
            sum+=(nums[i]==0?-1:1);

            if(hMap.containsKey(sum)){
                ans=Math.max(ans, i-hMap.get(sum));
            }else{
                hMap.put(sum, i);
            }
        }
        return ans;
    }

小贴士

这道题关键在于把0转为-11保持1,将问题转化为"找和为0的最长子数组"。

解释一下这行代码:

bash 复制代码
map.put(0, -1);

假设从数组起始位置(下标 0)到下标 i 的前缀和为 0,说明 [0, i] 区间内 01 数量相等,此时子数组长度就是 i - (-1) = i + 1

相关推荐
CelestialYuxin21 分钟前
A.R.I.S.系统:YOLOx在破碎电子废料分拣中的新探索
人工智能·深度学习·算法
_ziva_26 分钟前
YOLO 目标检测算法深度解析:从原理到实战价值
算法·yolo·目标检测
Jason_Honey243 分钟前
【蚂蚁金服Agent算法岗一面】
人工智能·算法·自然语言处理·面试
weixin_477271691 小时前
《老子》一书作者“李耳”简介
算法·图搜索算法
智算菩萨1 小时前
交错多模态内容生成:从“单张图“到“图文混排长文“的创作范式变革
人工智能·算法·aigc
Flying pigs~~1 小时前
机器学习之KNN算法
算法·机器学习·大模型·knn·k近邻算法·大数据处理
Navigator_Z1 小时前
LeetCode //C - 962. Maximum Width Ramp
c语言·算法·leetcode
m0_672703311 小时前
上机练习第29天
算法
兩尛1 小时前
409. 最长回文串
c++·算法·leetcode
(❁´◡`❁)Jimmy(❁´◡`❁)1 小时前
【KMP】算法详解
算法