LeetCode75——Day16

文章目录

一、题目

1004. Max Consecutive Ones III

Given a binary array nums and an integer k, return the maximum number of consecutive 1's in the array if you can flip at most k 0's.

Example 1:

Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2

Output: 6

Explanation: [1,1,1,0,0,1,1,1,1,1,1]

Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

Example 2:

Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3

Output: 10

Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]

Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

Constraints:

1 <= nums.length <= 105

nums[i] is either 0 or 1.

0 <= k <= nums.length

二、题解

滑动窗口+前缀和

cpp 复制代码
class Solution {
public:
    int longestOnes(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> P(n + 1);
        for (int i = 1; i <= n; ++i) {
            P[i] = P[i - 1] + (1 - nums[i - 1]);
        }
        int ans = 0;
        for (int right = 0; right < n; ++right) {
            int left = lower_bound(P.begin(), P.end(), P[right + 1] - k) - P.begin();
            ans = max(ans, right - left + 1);
        }
        return ans;
    }
};
相关推荐
张李浩6 小时前
Leetcode 054螺旋矩阵 采用方向数组解决
算法·leetcode·矩阵
big_rabbit05026 小时前
[算法][力扣101]对称二叉树
数据结构·算法·leetcode
WolfGang0073216 小时前
代码随想录算法训练营 Day11 | 二叉树 part01
数据结构
美好的事情能不能发生在我身上6 小时前
Hot100中的:贪心专题
java·数据结构·算法
myloveasuka6 小时前
Java与C++多态访问成员变量/方法 对比
java·开发语言·c++
2301_821700537 小时前
C++编译期多态实现
开发语言·c++·算法
奥地利落榜美术生灬7 小时前
c++ 锁相关(mutex 等)
开发语言·c++
xixihaha13247 小时前
C++与FPGA协同设计
开发语言·c++·算法
小小怪7507 小时前
C++中的函数式编程
开发语言·c++·算法
xixixiLucky7 小时前
编程入门算法题---小明爬楼梯求爬n层台阶一共多少种方法
算法