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

题目

分析

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

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

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

当numsleft,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;
    }
};

结果

相关推荐
2601_956121974 分钟前
map_计蒜客T1271 完美K倍子数组
c++·算法
小宋102123 分钟前
不用学算法也能玩转 AI?普通 Java 程序员转 AI 应用开发路线
java·人工智能·重构
编程圈子26 分钟前
电机驱动开发学习19. 霍尔 BLDC 三段式 FOC 启动算法
驱动开发·学习·算法
Hello_Damon_Nikola31 分钟前
伺服电机堵转检测算法详解
单片机·嵌入式硬件·算法
我是唐青枫1 小时前
Java Jetty 实战详解:从嵌入式 HTTP 服务到 Spring Boot 容器替换
java
带刺的坐椅1 小时前
当所有人都在用 TS/Python 写 Agent,我们为什么坚持 Java
java·ai·solon·codex·opencode·soloncode
小王师傅661 小时前
英语学习记
java·学习
罗小罗同学1 小时前
安德森癌症中心发表SCOPE IO模型,实现了对罕见肿瘤帕博利珠单抗疗效的精准预测,在患者早期即可预判药效
人工智能·算法·医学图像处理·医学ai
变量未定义~1 小时前
Tarjan算法-强连通分量、路径、出差
算法
geovindu1 小时前
CSharp: Iterative Algorithms
开发语言·后端·算法·c#·.net·迭代算法