Leetcode--1004. 最大连续1的个数Ⅲ
给定一个由若干 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的个数Ⅲ相关推荐
- leetcode 1004. 最大连续1的个数 III(滑动窗口)
给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = [1,1,1,0,0,0,1,1,1, ...
- leetcode —— 1004. 最大连续1的个数 III
给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = [1,1,1,0,0,0,1,1,1, ...
- 2022-2-15 Leetcode 1004.最大连续1的个数III
我的想法纠结于要计算出连续的 0 和连续 1 的子串的长度,然后再穷举组合. 其实只需要任意截取一段,看下这一段当中的 0 的个数是否大于 k. int longestOnes(vector<i ...
- 滑动窗口7:Leetcode 1004. 最大连续1的个数 III
题目要求: 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1:输入:A = [1,1,1,0,0,0,1 ...
- LeetCode 1004. 最大连续1的个数 III(双指针+滑动窗口)
题目描述 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = [1,1,1,0,0,0,1 ...
- C++描述 LeetCode 485. 最大连续1的个数
C++描述 LeetCode 485. 最大连续1的个数 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯 ...
- LeetCode 487. 最大连续1的个数 II(滑动窗口)
文章目录 1. 题目 2. 解题 1. 题目 给定一个二进制数组,你可以最多将 1 个 0 翻转为 1,找出其中最大连续 1 的个数. 示例 1: 输入:[1,0,1,1,0] 输出:4 解释:翻转第 ...
- leetcode 485. 最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 解题思路 遇到0时 ...
- 【Leetcode数组--子数组--滑动窗口】209. 长度最小的子数组 904. 水果成篮 1004. 最大连续1的个数 III 76. 最小覆盖子串(有数组操作中重要的方法:滑动窗口!!!!)
文章目录 Leetcode209 1.问题描述 2.解决方案 解法一:两个错误思路的算法 解法二:暴力 解法三:滑动窗口法(O(n)) Leetcode904 1.问题描述 2.解决方案 Leetco ...
- 1004. 最大连续1的个数 III
题目 https://leetcode.cn/problems/max-consecutive-ones-iii/ 答案 https://leetcode.cn/problems/max-consec ...
最新文章
- 'libxml/tree.h' file not found
- java 获取第一帧_java获取视频的第一帧
- 【Python】多线程的使用,通过传参接收返回值
- Linux用系统命令杀死僵尸进程
- base.dispose(disposing) 未将对象引用到实例_程序员深入理解asp.net c#值类型和引用类型...
- python文件读取模式_day-2 python 文件读写模式r,r+,w,w+,a,a+的区别
- maven编译项目时提示:cached in the local repository
- linux内核那些事之buddy
- setSystemUiVisibility() 与 getSystemUiVisibility() 显示隐藏状态栏
- [我的常识]动物庄园里说鼻环,到底为啥要穿鼻环呢
- 手把手教你学单片机--51单片机C语言开发
- matlab矩阵运算的应用
- 单声道,立体声 ,功放驱动喇叭的功率选择,功放的适配(A类,B类。。),怎样测量音量信号--怎样不烧坏喇叭。
- JRebel-JVMTI [ERROR] You’re using an incompatible ‘jrebel.jar’ with the JRebel Agent.【完美解决方案】
- 不用安装Wincap程序实现ARP广播包的发送和接收
- 5G NR MCG,SCG,PCell,PSCell,SCell,sPCell 概念
- 开始我的Python学习历程
- EPICS记录参考1--EPICS概要
- 【计算机网络】6 路由器与静态路由配置
- java 堆内存结构_基于JDK1.8的JVM 内存结构【JVM篇三】
热门文章
- LeetCode 810. 黑板异或游戏(博弈推理)
- LeetCode 951. 翻转等价二叉树(递归)
- LeetCode 198. 打家劫舍(DP)
- oracle 查看服务器密码修改,如何修改oracle用户密码
- docker php nginx,使用docker快速搭建nginx+php环境
- python的指针跟c的区别_ctypes中的LP_x*指针和*p指针有什么区别?(以及与结构的奇怪交互)...
- php 正则 尖括号,php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串...
- dll侧加载_WORD打开时出现加载DLL错误解决方法
- python编程入门课_程序设计入门—Python
- 关于深度学习,我们4年时间写了一本1400页的全栈手册