Uber 面试题:二维字母矩阵中搜索单词 – 代面试- VO 辅助 – 面试辅助

这是uber 的真实面试题

Given a two dimensional array of letters, find a given word written in any of the 8 directions.

Example:

Word: UBER

Array:
[["A", "U", "I", "K", "F", "W", "N"],
["W", "Q", "B", "O", "L", "X", "P"],
["T", "L", "A", "E", "R", "E", "C"],
["Y", "Z", "X", "E", "R", "L", "W"]]

Output: true

题目要求在一个二维字母矩阵里查找给定单词。单词可以沿着 8 个方向出现:上、下、左、右、左上、右上、左下、右下。只要从某个格子出发,沿着同一个方向连续匹配完整个单词,就返回 true

这题最容易误解的地方是:它不是每一步都能转弯的 Word Search。方向一旦确定,就要一直沿着这个方向走。

解法很简单:遍历矩阵中的每个格子,把它当作起点。如果字符等于 word[0],就尝试 8 个方向。每个方向用 (dx, dy) 表示,比如右下角是 (1, 1)。然后依次检查:

grid[row + i * dx][col + i * dy] == word[i]

中途越界或者字符不匹配,这个方向就失败。只要某个方向完整匹配,直接返回 true。全部尝试后还找不到,就返回 false

时间复杂度是 O(m * n * 8 * L),其中 mn 是矩阵大小,L 是单词长度。因为 8 是常数,也可以写成 O(m * n * L)。空间复杂度是 O(1)

这道题本身不难,重点是面试时要先确认“方向是否固定”。确认清楚后,用 8 个方向数组统一处理,代码会很短,也不容易写乱。

csoahelp 做的就是这种场景里的实时辅助,题目刚读完就能给出完整思路,现场不用卡壳。

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

Leave a Reply

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