LeetCode 1004.最大连续1的个数

这篇具有很好参考价值的文章主要介绍了LeetCode 1004.最大连续1的个数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

LeetCode 1004.最大连续1的个数,算法练习,leetcode,算法

题目解析

硬往题目介绍上边去想的话其实非常困难,如果换种方式思考就会简单许多。

若我们将思想转化为,找出最长的子串(里面含有的0的数量最大为k),然后返回其最长长度。

这样思路就清晰了许多,那么我们使用一个zero变量来记录0的个数,利用滑动窗口思想来解决,若当前进窗口的值是0那么zero++,若出窗口的该值是0那么zero--,保证zero<=k即可。 文章来源地址https://www.toymoban.com/news/detail-701298.html

代码

class Solution 
{
public:
    int longestOnes(vector<int>& nums, int k) 
    {
        int n=nums.size();
        int ret=0;
        for(int left=0,zero=0,right=0;right<n;right++)
        {
            // 进窗口
            // 如果该数是0 那么我们zero变量就++ 
            if(nums[right]==0) zero++;
            // 出窗口
            // 若此时zero的大小已经大于k
            while(zero>k)
            {
                // 出窗口
                if(nums[left]==0)
                zero--;
                // 更新窗口
                left++;
            }
            // 更新结果
            ret=max(ret,right-left+1);
        }
        return ret;
    }
};

到了这里,关于LeetCode 1004.最大连续1的个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode 刷题 数据结构 数组 485 最大连续1的个数

    给定一个二进制数组  nums  , 计算其中最大连续  1  的个数。 示例 1: 示例 2: 提示: 1 = nums.length = 105 nums[i]  不是  0  就是  1.   参看bilibli视频-up主 爱学习的饲养员,讲解的很清晰。 手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结】-

    2024年02月15日
    浏览(30)
  • ( 数组和矩阵) 485. 最大连续 1 的个数 ——【Leetcode每日一题】

    难度:简单 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 示例 2: 输入:nums = [1,0,1,1,0,1] 输出:2 提示: 1 = n u m s . l e n g t h = 1 0 5 1 = nums.length = 10^5

    2024年02月08日
    浏览(34)
  • 算法训练day16Leetcode104二叉树最大深度111二叉树最小深度222完全二叉树的节点个数

    https://www.bilibili.com/video/BV1Gd4y1V75u/?vd_source=8272bd48fee17396a4a1746c256ab0ae 用递归,但是什么顺序没想清楚 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边

    2024年01月16日
    浏览(31)
  • 【数据结构和算法】最大连续1的个数 III

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:滑动窗口  2.2 滑动窗口解题模板 三、代码 3.1 方法一:滑动窗口 四、复杂度分析 4.1 方法一:滑动窗口 这是力扣的 1004 题,

    2024年02月04日
    浏览(29)
  • Leetcode 628. 三个数的最大乘积

    原题链接:Leetcode 628. Maximum Product of Three Numbers Given an integer array nums , find three numbers whose product is maximum and return the maximum product. Example 1: Example 2: Example 3: Constraints: 3 = nums.length = 10 4 -1000 = nums[i] = 1000 给一个数组,要求返回数组任意三个数的乘积中最大的那个 思路: 首先要明确

    2024年01月21日
    浏览(68)
  • 78-快速排序练习-LeetCode面试题17.14.最小k个数

    题目 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 提示:     0 = len(arr) = 100000     0 = k = min(100000, len(arr)) 思路 注意到题目要求「任意顺序返回这 k 个数即可」,因此我们只需要确保前 k 小的

    2023年04月12日
    浏览(22)
  • (动态规划) 剑指 Offer 42. 连续子数组的最大和 ——【Leetcode每日一题】

    难度:简单 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为 O(n) 。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示 : 1 = a r r . l e n g t h = 1 0 5 1 = arr.length = 10^

    2024年02月11日
    浏览(42)
  • 每日一练【最大连续1的个数】

    给定一个二进制数组  nums  和一个整数  k ,如果可以翻转最多  k  个  0  ,则返回  数组中连续  1  的最大个数  。 本题同样是利用滑动窗口的解法。 首先进入窗口,如果是1,就直接让right++,但是如果是0,那么需要让计数器去++,当计数器大于指定的k时,就需要让l

    2024年01月21日
    浏览(33)
  • 滑动窗口(同向)同向双指针 leetcode713 3 1004 1234

    双指针从同一侧开始走 一般是right进行无脑遍历,left控制边界(导致模板化) 深刻理解题目概念以及**(right - left +1)** 的含义 多思考画图 具体还是要以题目为例 几个关键点 是正整数组 要找连续子数组(同向双指针) 完全模板化编程 几个关键点 子串即连续子数组(同向

    2023年04月18日
    浏览(24)
  • LeetCode 算法题 (数组)存在连续3个奇数的数组

    输入一个数组,并输入长度,判断数组中是否存在连续3个元素都是奇数的情况,如果存在返回存在连续3个元素都是奇数的情况,不存在返回不存在连续3个元素都是奇数的情况 例一: 例二:

    2024年02月21日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包