滑动窗口最大值:你以为是数组题,其实是在考“思维是否在线”
大家好,我是Echo_Wish。
今天聊一道算法圈老熟人——滑动窗口最大值(Sliding Window Maximum)。
说它老,是因为几乎所有算法书、面试题、LeetCode 热榜里都有它;
说它“阴”,是因为90% 的人第一次写出来的,时间复杂度都是错的。
而更扎心的是:
👉你不是不会写代码,而是没想清楚“窗口”这件事到底意味着什么。
一、先把问题说“人话”一点
题目大意其实很简单:
给你一个数组
nums,再给你一个窗口大小k,
窗口从左往右滑动,
每次滑动一步,
你都要告诉我:当前窗口里的最大值是多少。
举个例子,一看就懂:
nums = [1,3,-1,-3,5,3,6,7] k = 3窗口变化过程是这样的:
[1, 3, -1] -> max = 3 [3, -1, -3] -> max = 3 [-1, -3, 5] -> max = 5 [-3