单调队列是一种保持队列内元素单调有序的数据结构,常用于处理滑动窗口最大值/最小值、动态规划优化等问题。简单点说,它就是一个“特别挑剔”的队列,不是所有元素都能进来,能进来的也可能会被踢出去,只保留对结果有价值的元素。 核心特点: 单调递增队列:队列中的元素从前到后是递增的(用于求最小值) 单调递减队列:队列中的元素从前到后是
// 单调队列算法void maxSlidingWindow(int* nums, int numsSize, int k, int* result, int* resultSize){ Deque q; // 定义双端队列 Element e; initDeque(&q, numsSize); *resultSize = 0; for (int i = 0; i < numsSize; i++) { if (i >= k && getFront(&q).idx <= i - k) ...