写点什么

【LeetCode】最大连续 1 的个数三 Java 题解

用户头像
HQ数字卡
关注
发布于: 2021 年 02 月 19 日

题目

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


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

代码

public class DayCode {    public static void main(String[] args) {        int[] A = new int[]{0, 1, 0};        int K = 1;        int ans = new DayCode().longestOnes(A, K);        System.out.println("ans is " + ans);    }
/** * https://leetcode-cn.com/problems/max-consecutive-ones-iii/ * 时间复杂度O(n),空间复杂度O(1) * @param A * @param K * @return */ public int longestOnes(int[] A, int K) { int count = 0; int left = 0; int right = 0; int ans = 0; while (right < A.length) { if (A[right++] == 0) { count++; } while (count > K) { if (A[left++] == 0) { count--; } } ans = Math.max(ans, right - left); } return ans; }}
复制代码

总结

  • 这个题目是本月最大连续 1 的个数升级版,增加了可以翻转的条件。

  • 题目简洁明确,可以用滑动窗口的思想来解决。


发布于: 2021 年 02 月 19 日阅读数: 10
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】最大连续1的个数三Java题解