机考刷题之 13 LeetCode 1004 最大连续1的个数 III

题目

分析

由于这个题目相当于是往0里去填1,所以我们在拓展窗口的时候应该尤其关注0的个数。

由于这个题目存在以下关系:

当nums[left,right]的0的个数>k,那么nums[left,right+1]、nums[left,right+2]、....nums[left,end]的0的个数都会>k。

当nums[left,right]的0的个数<=k,其内部的子串的0个数都<=k

那么就满足之前提到的滑动窗口的做题条件:

代码

cpp 复制代码
class Solution {
public:
    int longestOnes(vector<int>& nums, int k) {
        int left = 0, zeroCount = 0, maxLen = 0;
        
        for (int right = 0; right < nums.size(); right++) {
            // 扩展右边界
            if (nums[right] == 0) {
                zeroCount++;
            }
            
            // 收缩左边界,直到窗口内 0 的数量 <= k
            while (zeroCount > k) {
                if (nums[left] == 0) {
                    zeroCount--;
                }
                left++;
            }
            
            // 更新最大长度(此时窗口 [left, right] 是合法的)
            maxLen = max(maxLen, right - left + 1);
        }
        
        return maxLen;
    }
};

结果

相关推荐
CoderCodingNo5 分钟前
【NOIP】2011真题解析 luogu-P1003 铺地毯 | GESP三、四级以上可练习
算法
翊谦16 分钟前
Java Agent开发 Milvus 向量数据库安装
java·数据库·milvus
晓晓hh20 分钟前
JavaSE学习——迭代器
java·开发语言·学习
iFlyCai20 分钟前
C语言中的指针
c语言·数据结构·算法
查古穆41 分钟前
栈-有效的括号
java·数据结构·算法
再一次等风来42 分钟前
近场声全息(NAH)仿真实现:从阵列实值信号到波数域重建
算法·matlab·信号处理·近场声全息·nah
汀、人工智能42 分钟前
16 - 高级特性
数据结构·算法·数据库架构·图论·16 - 高级特性
大熊背1 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
Java面试题总结1 小时前
Spring - Bean 生命周期
java·spring·rpc
硅基诗人1 小时前
每日一道面试题 10:synchronized 与 ReentrantLock 的核心区别及生产环境如何选型?
java