1004.最大连续1的个数

简介: 1004.最大连续1的个数

题目:给定一个二进制数组nums 和一个整数k,如果可以翻转最多k个0,返回数组中连续1的最大个数。

解题思路:使用滑动窗口来实时维护left 和 right 了。在 right 向右移动的过程中,我们同时移动 left,直到left 为首个。

class Solution {
    public int longestOnes(int[] nums, int k) {
        int n = nums.length;
        int left = 0, lsum = 0, rsum = 0;
        int ans = 0;
        for (int right = 0; right < n; ++right) {
            rsum += 1 - nums[right];
            while (lsum < rsum - k) {
                lsum += 1 - nums[left];
                ++left;
            }
            ans = Math.max(ans, right - left + 1);
        }
        return ans;
    }
}


相关文章
|
6月前
|
算法 测试技术
LeetCode-1004. 最大连续1的个数 III
LeetCode-1004. 最大连续1的个数 III
|
6月前
leetcode-485:最大连续1的个数
leetcode-485:最大连续1的个数
47 0
|
6月前
和最小的K个数对
和最小的K个数对
Leetcode——485. 最大连续 1 的个数
文章目录 1、题目 2、滑动窗口 3、一次遍历(官方题解)
Leetcode——485. 最大连续 1 的个数
LeetCode 485. 最大连续 1 的个数 - 暴力法
定义两个变量 thisSum 每次遍历中的最大值 maxSum 返回值,所有遍历结果中的最大值
|
机器学习/深度学习 算法
第k个数
第k个数
124 0
|
算法 Java 编译器
20天刷题计划-191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。