滑动窗口模板

张开发
2026/4/7 2:59:45 15 分钟阅读

分享文章

滑动窗口模板
看到直接套模板要的结果必须挨着、不能跳着选比如要一段连续的史书不能跳卷选不能打乱原来的顺序不能把给的数重新排序必须按给的先后顺序来你要卡的那个限制条件选的越长这个数只会涨不会跌比如选的史书越长里面 0 的数量只会变多不会变少题目问法带最长 / 最短 连续 最多 / 至少限制【绝对不能用的红线】题目要求 / 允许排序打乱原顺序直接放弃模板import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); // 读入基础数据 int n sc.nextInt(); int[] arr new int[n]; for (int i 0; i n; i) { arr[i] sc.nextInt(); } // 固定初始化变量 int left 0; // 左指针窗口左边界 int windowState 0; // 窗口核心状态用于判断合法性 int maxResult 0; // 最终结果最长合法区间长度 // 右指针单向遍历扩大窗口 for (int right 0; right n; right) { // -------------------------- // 填空1右扩窗口时更新窗口核心状态 // -------------------------- // 核心逻辑窗口不合法时循环收缩左边界 while (/* -------------------------- 填空2窗口不合法的判断条件 -------------------------- */) { // -------------------------- // 填空3左缩窗口时更新窗口核心状态 // -------------------------- left; // 左指针单向右移无例外 } // 窗口合法后更新最长结果 maxResult Math.max(maxResult, right - left 1); } // 输出最终结果 System.out.println(maxResult); } }

更多文章