力扣(LeetCode)算法_C++——最大连续 1 的个数 III

给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。

示例 1:

输入:nums = 1,1,1,0,0,0,1,1,1,1,0, K = 2

输出:6

解释:1,1,1,0,0,1,1,1,1,1,1

粗体数字从 0 翻转到 1,最长的子数组长度为 6。

示例 2:

输入:nums = 0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1, K = 3

输出:10

解释:0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1

粗体数字从 0 翻转到 1,最长的子数组长度为 10。

cpp 复制代码
    int longestOnes(vector<int>& nums, int k) {
        int left = 0 , right = 0;
        int len = 0, maxi = 0;
        int n = nums.size();
        for (right = 0 ; right < n ; ++right){
            if (nums[right] == 0){
                if (k > 0) {
                    k--;
                    len++;
                    maxi = max(len, maxi);
                } else{
                    while (nums[left] == 1) {left++;len--;}
                    left++;
                }
            } else {
                len++;
                maxi = max(maxi, len);
            }
        }
        return maxi;
    }
相关推荐
c238566 分钟前
互斥锁高频面试题全解:从基础概念到底层实现,一文通关
java·c++·面试·职场和发展
nianniannnn17 分钟前
c++复习自存--继承
开发语言·c++
kebidaixu40 分钟前
两轮BMS 防打火策略详解
算法
wabs6661 小时前
关于动态规划【力扣1035.不相交的线和53.最大子数组和的思考】
算法·leetcode·动态规划
退休倒计时1 小时前
【每日一题】LeetCode 199. 二叉树的右视图 TypeScript
算法·leetcode·typescript
可编程芯片开发1 小时前
通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器
算法
kebidaixu2 小时前
两轮BMS 短路保护策略详解
算法
王老师青少年编程2 小时前
2026年6月GESP真题及题解(C++二级):完全平方数计数
c++·题解·真题·gesp·二级·2026年6月·完全平方数计数
zwenqiyu2 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
z小猫不吃鱼2 小时前
03 Optimal Brain Surgeon 详解:Hessian 剪枝为什么有效?
算法·机器学习·剪枝