拿下技术面上传简历

给你一个长度 n=10^7 的整数数组和一个固定窗口大小 k=1000,要求输出每个窗口内的最大值,总时间必须是 O(n)。你会用什么结构?请具体说明:队列里存元素值还是下标、什么时候从队尾弹出、队首元素什么时候失效、以及为什么这套操作合起来是 O(n) 而不是 O(nk)。

数据结构与算法线性与树结构1-3 年知识点 1 个

面试官在考什么

判断候选人是否真的手写过单调队列,而不是只记得「用双端队列」这个结论。

栈与队列

回答框架 · 前两步

  1. 用双端队列维护一组候选下标:下标严格递增、对应值严格递减,每个窗口的答案就是队首。
  2. 必须存下标而不是值,因为只有下标才能判断队首是否已滑出窗口(i - k + 1 > 队首下标即出队)。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题