第52天(中等题 数据结构)

打卡第五十二天
2道中等题
image

题目:
image

思路:前缀和+哈希表
image

代码:

int findMaxLength(vector<int>& nums) {
    unordered_map<int, int> pos = {{0, -1}};  // 初始前缀和为0,索引为-1(从0开始计算子数组)
    int ans = 0, s = 0;  
    for (int i = 0; i < nums.size(); i++) {
        s += nums[i] ? 1 : -1;  // 0 变成 -1,1 变成 +1
        if (pos.contains(s)) {   // 如果之前出现过这个前缀和
            ans = max(ans, i - pos[s]);  // 当前索引减去第一次出现的索引,得到子数组长度
        } else {
            pos[s] = i;  // 第一次出现这个前缀和的位置
        }
    }
    return ans;
}

耗时≈一小时 明天继续

posted @ 2025-12-12 00:36  Wy0518  阅读(3)  评论(0)    收藏  举报