滑动窗口问题

最长含有不小于x的子数组

cs 复制代码
#include <stdio.h>

int main() {
    int n;
    long long x, k;  // x 和 k 可能很大,用 long long
    scanf("%d %lld %lld", &n, &x, &k);

    long long a[100005];  // 根据数据规模 n <= 10^5
    for (int i = 0; i < n; i++) {
        scanf("%lld", &a[i]);
    }

    int left = 0;
    int count = 0;  // 当前窗口内 >= x 的元素个数
    int max_len = -1;

    for (int right = 0; right < n; right++) {
        // 扩展右边界
        if (a[right] >= x) {
            count++;
        }

        // 如果当前窗口内有效元素个数超过了 k,收缩左边界
        while (count > k) {
            if (a[left] >= x) {
                count--;
            }
            left++;
        }

        // 如果当前窗口内有效元素个数正好是 k,更新最大长度
        if (count == k) {
            int current_len = right - left + 1;
            if (current_len > max_len) {
                max_len = current_len;
            }
        }
    }

    printf("%d\n", max_len);
    return 0;
}
相关推荐
阿贵---2 小时前
模板编译期循环展开
开发语言·c++·算法
2601_954023662 小时前
Beyond the Hype: Deconstructing the 2025 High-Performance Stack for Agencies
java·开发语言·算法·seo·wordpress·gpl
ysa0510302 小时前
二分+前缀(预处理神力2)
数据结构·c++·笔记·算法
2401_833197732 小时前
嵌入式C++电源管理
开发语言·c++·算法
灰色小旋风2 小时前
力扣22 括号生成(C++)
开发语言·数据结构·c++·算法·leetcode
寒月小酒2 小时前
3.23 OJ
数据结构·c++·算法
2501_924952692 小时前
模板编译期哈希计算
开发语言·c++·算法
2201_758642642 小时前
嵌入式C++开发注意事项
开发语言·c++·算法
闻哥2 小时前
MySQL InnoDB 缓存池(Buffer Pool)详解:原理、结构与链表管理
java·数据结构·数据库·mysql·链表·缓存·面试