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

相关推荐
团象科技19 小时前
走访近百支出海技术团队后的海外云计算资源选型实操观察
大数据·人工智能·算法
勤自省19 小时前
吴恩达机器学习课程实验:线性回归模型入门(课后实验)
人工智能·算法·机器学习·回归·线性回归
ChillCoding19 小时前
更新中:C++ STL库,查找排序(基础算法),数据结构,数学算法,竞赛相关基础
数据结构·c++·算法
智者知已应修善业19 小时前
【51单片机使用IO组赋值方法实现无源蜂鸣器响时LED12亮不响时34亮】2024-3-7
c++·经验分享·笔记·算法·51单片机
珊瑚里的鱼19 小时前
【动态规划】按摩师
算法·动态规划
Fms_Sa19 小时前
贪心算法-背包问题
算法·贪心算法·c#
大雨淅淅19 小时前
【机器人】ROS2 机械臂控制(MoveIt2)从入门到实战
人工智能·python·神经网络·学习·算法·机器学习·机器人
智者知已应修善业20 小时前
【51单片机0.1秒计时到21.0时点亮LED】2024-1-5
c++·经验分享·笔记·算法·51单片机
apcipot_rain20 小时前
计科八股20260606——二叉树、PCA、图深度学习、进程上下文、C语言预编译、文件读写、单精度浮点数
c语言·数据结构·算法·pca·图神经网络
scx_link20 小时前
逻辑回归的总结
算法·机器学习·逻辑回归