拿下技术面上传简历

给你一个 1000×1000 的 0/1 网格(1 是陆地,0 是水),上下左右相邻的陆地属于同一个岛,要求返回岛屿数量。A 同学用递归 DFS 做 flood fill,样例全过,但把规模放大到接近满屏陆地时程序崩溃。请说明崩溃的原因,写出你会怎么改;并说明同一份数据用 BFS 写时,队列规模的最坏情况是什么量级。

数据结构与算法图与搜索校招知识点 1 个

面试官在考什么

判断候选人是否真在大规模网格上跑过图遍历,能否区分递归调用次数与调用栈深度,并知道 visited 标记时机与 BFS 边界规模。

图遍历

回答框架 · 前两步

  1. 崩溃原因:递归栈深度正比于搜索深度,满屏陆地时深度可达 10^6 级别,远超默认调用栈空间,属于栈溢出而不是递归次数太多。
  2. 改法:改成显式栈的迭代 DFS 或 BFS,把栈/队列放在堆上;也可用并查集把相邻陆地 union 起来最后数连通块。

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

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

延伸阅读

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

同一能力域的其他题