在做题中学习(45):最大连续1的个数III

news/2024/5/20 5:54:00 标签: 学习, c++, 算法, leetcode, 滑动窗口

1004. 最大连续1的个数 III - 力扣(LeetCode)

解法:同向双指针————“滑动窗口

思路:因为要返回数组中连续的数,就相当于一个子数组,而要的是一个可以翻转 <=  k个0的子数组使它可以变为全1的子数组,那就可以把问题转为:找出一个最大的子数组,它里面有<=k个0.

因此一定要定义一个计数器记录0的个数。

通过上图,可以看到当right进窗口到此位置时,子数组中0的个数 > k ,所以需要通过left出窗口来维持0的数量

1.left = 0,right = 0

2.进窗口————1就略过,0就计数器++

3.判断————0的个数>k

4.出窗口+再次判断————0就略过,1就left++

5.更新数据————选出更大的len

class Solution 
{
public:
    int longestOnes(vector<int>& nums, int k) 
    {
        int zcount = 0,len = 0;
        int z = 0;
        for(int left = 0,right = 0;right<nums.size();)
        {
            //1.进窗口
            if(nums[right]==0)
            {
                zcount++;
            }
            //2.判断
            while(zcount>k)
            {
                //3.出窗口
                if(nums[left]==1)
                {
                    left++;
                }
                else
                {
                    zcount--;
                    left++;
                }
            }
            //4.更新数据
            len = max(len,right - left + 1);
            right++;
        }
        return len;
    }
};


http://www.niftyadmin.cn/n/5319382.html

相关文章

React16源码: React中的update和updateQueue的源码实现

React中的update和updateQueue 1 &#xff09;概述 在 ReactDOM.render 过程中&#xff0c;还需要创建一个 update 对象update 用于记录组件状态的改变的一个对象&#xff0c;它存放于Fiber对象的 updateQueue 中updateQueue&#xff0c;它是一个单向链表的结构&#xff0c;一…

CCF模拟题 202309-1 坐标变换(其一)

问题描述 试题编号&#xff1a; 202309-1 试题名称&#xff1a; 坐标变换&#xff08;其一&#xff09; 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 对于平面直角坐标系上的坐标&#xff08;x,y&#xff09;&#xff0c;小P定义了一个包含…

【PaperReading】4. TAP

Category Content 论文题目 Tokenize Anything via Prompting 作者 Ting Pan, Lulu Tang, Xinlong Wang, Shiguang Shan (Beijing Academy of Artificial Intelligence) 发表年份 2023 摘要 提出了一个统一的可提示模型&#xff0c;能够同时对任何事物进行分割、识别和…

eureka ConnectException如何解决

最近开始学习微服务&#xff0c;配置了一个超级简单的eureka&#xff0c;居然频繁报错无法启动&#xff0c;总是报ConnectException&#xff0c;踩了不少坑&#xff0c;因此记录一下。 【未解决】一种典型的做法是配置一个WebSecurityConfig&#xff0c;把某些安全策略关掉&am…

docker容器运行elaticsearch和kibana,又把ECS跑爆了

就运行了两个容器一个elasticsearch应一个就是可视化的kibana 开始还好好的后来cpu又爆了 最后只有重启ECS然后再启动这两个服务就好了 去网上找了下解决方法。说是正常情况Kibana第一加载非常耗资源。

信创平台迁移认知误区

误区一 问题&#xff1a;应用采用JDK1.5、JDK1.6进行开发&#xff0c;是否可以迁移到信创平台的TongWeb下&#xff0c;需要用TongWeb哪个版本 &#xff1f; 错误答复&#xff1a;JDK1.5需要采用TongWeb5.0、JDK1.6需要采用TongWeb6.1、JDK1.7需要采用TongWeb7.0、最新TongWe…

如何用Mac工具制作“苹果高管形象照”

大伙儿最近有没有刷到“苹果高管形象照”风格&#xff0c;详细说来就是&#xff1a; 以苹果官网管理层简介页面中&#xff0c;各位高管形象照为模型&#xff0c;佐以磨皮、美白、高光等修图术&#xff0c;打造的看上去既有事业又有时间有氧的证件照&#xff0c;又称“苹…

cmd命令调用vivado tcl模式

卡了很久的cmd调用vivado tcl模式&#xff0c;今天终于搞出来了。 原本计划使用cmd命令调用&#xff0c;网上给出的结果统一是vivado -mode batch或者tcl&#xff0c;这个也正常&#xff0c;在matlab中可以通过system进一步调用cmd来实现自动化采数。 实际的问题是&#xff0…