【前缀和+哈希】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

相关推荐
To_OC13 分钟前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn1 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹1 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术2 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
CV-Climber4 小时前
检索技术的实际应用
人工智能·算法
hhzz5 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
从零开始的代码生活_6 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
TsingtaoAI6 小时前
3D高斯泼溅技术发展及其在具身智能领域的应用综述
人工智能·算法·ai·具身智能·高斯泼溅
atunet6 小时前
关于图算法中的连通分量检测与最小割问题7
算法