微软面试真题:找出缺失区间,这一题面试官在看什么 – Microsoft VO – 面经 – 一亩三分地 – Microsoft Interview

那天面试一开始,面试官直接把题目贴出来

“You are given a sorted list of distinct integers from 0 to 99… produce a string describing missing numbers.”

我简单确认了一下条件:

  • 输入是否一定有序、无重复
  • 范围是否固定在 0 到 99
  • 是否可能为空数组

接下来我用例子在白板上走了一遍:

[0, 1, 2, 50, 52, 75]

脑子里的动作其实很简单,就是盯着“空档”。
3 到 49 是一段,51 是单个,53 到 74 又是一段,最后 76 到 99。

面试官看的是有没有把问题转成“找间隔”,这一点一旦想清楚,后面就很自然。


我开始讲思路,没有绕弯:

整体就是一次线性扫描,每次看当前数字和前一个数字之间有没有断层。

关键点有三个:

  • 如果差值大于 1,说明中间有缺失
  • 缺一个数,直接写数字
  • 缺多个数,用区间 start-end

还有两个容易漏的地方:

  • 开头:0 到第一个元素之间
  • 结尾:最后一个元素到 99

写代码的时候,我会刻意把结构压简单。

引入一个 prev,初始化为 -1,这样开头可以统一处理。
每次遇到 num,就判断 num - prev

  • 大于 1 → 生成区间
  • 等于 1 → 什么都不做

最后再单独处理一次 99。

字符串拼接我不会在循环里做,而是先收集结果,再 join,这一点面试官也专门问了一下。


复杂度这里不需要铺陈:

  • 时间复杂度:O(n),只扫一遍
  • 空间复杂度:O(n),最坏情况下每个缺失都是单点

后面给了一个变体:

范围从固定的 0~99,变成 lowerupper

这里我没有重写逻辑,只做了两件事:

  • prev 改成 lower - 1
  • 把结尾的 99 改成 upper

整个思路是完全复用的,这种改法面试官会比较认可。

这些如果在面试现场才临时想,很容易断节奏。

如果你最近有 VO 面试,提前准备这些 真实题型和思路,会非常关键。

我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *