给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。

返回仅包含 1 的最长(连续)子数组的长度。

示例 1:

输入:A = [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:

输入:A = [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。

提示:

1 <= A.length <= 20000
0 <= K <= A.length
A[i] 为 0 或 1

思路:双指针,滑动窗口

提交的代码:

class Solution {
    public int longestOnes(int[] nums, int k) {
       int i=0,j=0,sum=0,max=0;
            for(j=0;j<nums.length;)
            {
                if(nums[j]==1)
                {
                    sum++;
                    j++;
                }
                else if(nums[j]==0&&k>0)
                {
                    k--;
                    sum++;
                    j++;
                }
                else    //如果k为0,且当前字段最后一位为0,向后滑动,前面的字段开始退位
                {
                    sum--;
                    if(nums[i]==0)
                    {
                        k++;
                    }
                    i++;
                }
                max = Math.max(sum, max);
            }
            return max;
    }
}

完整的代码:

public class Solution1004 {
     public static int longestOnes(int[] nums, int k) {
            int i=0,j=0,sum=0,max=0;
            for(j=0;j<nums.length;)
            {
                if(nums[j]==1)
                {
                    sum++;
                    j++;
                }
                else if(nums[j]==0&&k>0)
                {
                    k--;
                    sum++;
                    j++;
                }
                else
                {
                    sum--;
                    if(nums[i]==0)
                    {
                        k++;
                    }
                    i++;
                }
                max = Math.max(sum, max);
            }
            return max;
        }
     public static void main(String[] args)
     {
         int[] nums = {0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1};
         int k =3;
         System.out.println(longestOnes(nums,k));
     }
}

Leetcode--1004. 最大连续1的个数Ⅲ相关推荐

  1. leetcode 1004. 最大连续1的个数 III(滑动窗口)

    给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = [1,1,1,0,0,0,1,1,1, ...

  2. leetcode —— 1004. 最大连续1的个数 III

    给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = [1,1,1,0,0,0,1,1,1, ...

  3. 2022-2-15 Leetcode 1004.最大连续1的个数III

    我的想法纠结于要计算出连续的 0 和连续 1 的子串的长度,然后再穷举组合. 其实只需要任意截取一段,看下这一段当中的 0 的个数是否大于 k. int longestOnes(vector<i ...

  4. 滑动窗口7:Leetcode 1004. 最大连续1的个数 III

    题目要求: 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1:输入:A = [1,1,1,0,0,0,1 ...

  5. LeetCode 1004. 最大连续1的个数 III(双指针+滑动窗口)

    题目描述 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = [1,1,1,0,0,0,1 ...

  6. C++描述 LeetCode 485. 最大连续1的个数

    C++描述 LeetCode 485. 最大连续1的个数   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯 ...

  7. LeetCode 487. 最大连续1的个数 II(滑动窗口)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个二进制数组,你可以最多将 1 个 0 翻转为 1,找出其中最大连续 1 的个数. 示例 1: 输入:[1,0,1,1,0] 输出:4 解释:翻转第 ...

  8. leetcode 485. 最大连续1的个数

    给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 解题思路 遇到0时 ...

  9. 【Leetcode数组--子数组--滑动窗口】209. 长度最小的子数组 904. 水果成篮 1004. 最大连续1的个数 III 76. 最小覆盖子串(有数组操作中重要的方法:滑动窗口!!!!)

    文章目录 Leetcode209 1.问题描述 2.解决方案 解法一:两个错误思路的算法 解法二:暴力 解法三:滑动窗口法(O(n)) Leetcode904 1.问题描述 2.解决方案 Leetco ...

  10. 1004. 最大连续1的个数 III

    题目 https://leetcode.cn/problems/max-consecutive-ones-iii/ 答案 https://leetcode.cn/problems/max-consec ...

最新文章

  1. 'libxml/tree.h' file not found
  2. java 获取第一帧_java获取视频的第一帧
  3. 【Python】多线程的使用,通过传参接收返回值
  4. Linux用系统命令杀死僵尸进程
  5. base.dispose(disposing) 未将对象引用到实例_程序员深入理解asp.net c#值类型和引用类型...
  6. python文件读取模式_day-2 python 文件读写模式r,r+,w,w+,a,a+的区别
  7. maven编译项目时提示:cached in the local repository
  8. linux内核那些事之buddy
  9. setSystemUiVisibility() 与 getSystemUiVisibility() 显示隐藏状态栏
  10. [我的常识]动物庄园里说鼻环,到底为啥要穿鼻环呢
  11. 手把手教你学单片机--51单片机C语言开发
  12. matlab矩阵运算的应用
  13. 单声道,立体声 ,功放驱动喇叭的功率选择,功放的适配(A类,B类。。),怎样测量音量信号--怎样不烧坏喇叭。
  14. JRebel-JVMTI [ERROR] You’re using an incompatible ‘jrebel.jar’ with the JRebel Agent.【完美解决方案】
  15. 不用安装Wincap程序实现ARP广播包的发送和接收
  16. 5G NR MCG,SCG,PCell,PSCell,SCell,sPCell 概念
  17. 开始我的Python学习历程
  18. EPICS记录参考1--EPICS概要
  19. 【计算机网络】6 路由器与静态路由配置
  20. java 堆内存结构_基于JDK1.8的JVM 内存结构【JVM篇三】

热门文章

  1. LeetCode 810. 黑板异或游戏(博弈推理)
  2. LeetCode 951. 翻转等价二叉树(递归)
  3. LeetCode 198. 打家劫舍(DP)
  4. oracle 查看服务器密码修改,如何修改oracle用户密码
  5. docker php nginx,使用docker快速搭建nginx+php环境
  6. python的指针跟c的区别_ctypes中的LP_x*指针和*p指针有什么区别?(以及与结构的奇怪交互)...
  7. php 正则 尖括号,php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串...
  8. dll侧加载_WORD打开时出现加载DLL错误解决方法
  9. python编程入门课_程序设计入门—Python
  10. 关于深度学习,我们4年时间写了一本1400页的全栈手册