力扣(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;
    }
相关推荐
IT当时语_青山师__JAVA技术栈3 分钟前
数组与链表深度解析:从内存布局到工业级实践
java·算法·面试
吃着火锅x唱着歌4 分钟前
LeetCode 496.下一个更大元素I
算法·leetcode·职场和发展
咩咦6 分钟前
C++学习笔记07:引用做返回值
c++·学习笔记·引用·static·引用返回
郭涤生8 分钟前
C++ 20联合体(Union)
开发语言·c++
Fanfanaas9 分钟前
Linux 系统编程 文件篇 (一)
linux·运维·服务器·c++·学习
王老师青少年编程10 分钟前
csp信奥赛C++高频考点专项训练之字符串 --【回文字符串】:判断字符串是否为回文
c++·字符串·csp·高频考点·信奥赛·回文字符串·判断字符串是否为回文
Emberone10 分钟前
C++ 模板进阶详解:从非类型参数到特化、偏特化与分离编译
开发语言·c++
不知名的忻11 分钟前
关键路径(Java)
java·数据结构·算法·关键路径
凤凰院凶涛QAQ12 分钟前
《C++转Java快速入手系列》实践篇:图书系统
java·开发语言·c++
大大杰哥13 分钟前
2025ccpc南昌补题笔记(前六题)
c++·笔记·算法