机考刷题之 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;
    }
};

结果

相关推荐
leobertlan2 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的2 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8262 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
开发小能手1232 小时前
答案daanC语言
数据结构·算法
小 黄 鸡3 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
Navigator_Z4 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
伯恩bourne4 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_5 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
pride.li5 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
省钱兄--zs5 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构