拿下技术面上传简历

给一个长度为 n 的整数数组和一个整数 k,求最长的连续子数组,使得其元素和 ≤ k。先回答:当数组元素全部为非负整数时你怎么做?再回答:如果数组里可能出现负数,原来那套滑动窗口还成不成立、为什么、你会改用什么做法?

数据结构与算法图与搜索1-3 年知识点 1 个

面试官在考什么

判断候选人是把滑动窗口当模板背,还是真理解它成立所依赖的单调性前提——这是区分高低最明显的一题。

滑动窗口

回答框架 · 前两步

  1. 非负版本:右指针 r 一路右移累加 sum;当 sum > k 时循环左移 l 直到 sum ≤ k;每一步用 r-l+1 更新答案。O(n) 时间、O(1) 空间。
  2. 正确性来自单调性:元素非负 ⇒ 固定 r 时 sum(l..r) 随 l 增大单调不增,所以左指针只需单向移动,收缩之后不用回头,r 也不用退。

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

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

延伸阅读

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

同一能力域的其他题