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;
    }
};
相关推荐
小菜鸡桃蛋狗1 分钟前
C++——类和对象(中)
开发语言·c++
MORE_779 分钟前
leecode-灌溉花园-贪心算法and动态规划
算法·贪心算法·动态规划
feng_you_ying_li12 分钟前
c++之二叉搜索树的实现
c++
晚枫歌F12 分钟前
线程池的理解使用以及代码详解
数据结构
梵尔纳多14 分钟前
视角的移动以及模型的平移,旋转,缩放
c++·图形渲染·opengl
gis分享者14 分钟前
华为OD面试-Java、C++、Pyhton等多语言实现-目录
java·c++·华为od·面试·目录·od·机试
kyle~15 分钟前
C++--- dlsym 调用封装好的算法动态库的核心工具 <dlfcn.h>
开发语言·c++·算法
似水এ᭄往昔20 分钟前
【初阶数据结构】--排序算法
数据结构·算法·排序算法
2301_7811435623 分钟前
C语言笔记(四)
c语言·笔记·算法
算法-大模型备案 多米36 分钟前
算法备案算法安全自评估报告模板(精简完善版)
大数据·网络·人工智能·算法·文心一言