滑动窗口问题

最长含有不小于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;
}
相关推荐
心抵鹊8 分钟前
算法之双指针系列(一)
算法·leetcode
十二16 分钟前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
小此方1 小时前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划
Pniubi2 小时前
力扣560.和为k的子数组
算法·leetcode·职场和发展
D e re k ZH2 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
Pniubi3 小时前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展
東隅已逝,桑榆非晚5 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
Eyfcom6 小时前
〖物联网终端实战 01〗UWB 室内高精度定位:仓储 AGV 与人员的厘米级轨迹追踪
物联网·算法·物流系统·快递系统·跨境物流快递系统·物联网终端实战
bro_Java6666 小时前
《排序的底层逻辑:比较、交换与分治》
java·算法·排序算法
爱喝雪碧的可乐7 小时前
MATLAB
开发语言·算法·matlab