今天出去玩,买了好多东西,只想赶快把这篇赶出来。
DFS:碰到一个新节点时,先从这个新节点开始往下做,所以用 FILO 的 stack or 等价的递回来做。
通常是走遍 matrix,但 tree 的 3 种 traversal 也算是 dfs
for 所有元素:
if 条件成立:
dfs(x, y)
纪录 visited
通常会需要纪录已经拜访的元素,或是更改原来的元素做标记,以避免重复访问造成无穷回圈
额外纪录 visited 会占空间,但面试时要先厘清是否可以更改原先的 input。
判断 bound
个人习惯是
递回时:无论如何先走下一步,再从最前面的 basic case 判断是否越界
迭代时:先判断下一步是否越界,才决定是否加进 stack。
方向
若是经典的走 matrix 的四个方向,可以用 directions = [-1, 0, 1, 0, -1],每相临两个代表一个方向。
695. Max Area of Island (Medium)
79. Word Search (Medium)
dfs 的实作,包含怎麽利用已经找到的结果(例如 79),都会影响整体速度。
可以多参考别人的 code 测看看哪里比较快,
而且因为模式都很相像,可以写一个自己最喜欢的版本的 pseudo code,方便以後把熟悉度练上去。
.. 好想睡觉ㄛ
本来想写 trie 和 graph 却一直拖
>>: Day 13 - Spread Operator & Rest Operator
上一篇有提到关於如何在向量中求梯度下降的公式, 因此此篇要来讲为什麽要向量v跟f(x,y)的偏微分作...
架构图 悬挂 逻辑判断语句若是只有连接一条语句时,这一条语句会与离它最近的逻辑判断语句相连,例如以下...
前言: 上一篇文章中,我们最後完成了一个简单的网页留言版,主要是使用php的GET方法来进行资料的...
有没有想过除了从菜市场、超级市场买菜以外,试着跟人在离家不远的农场,共享农作、畜牧来获取需求的天然的...
昨天提到如何使用 kotlinx.serialization 处理 request/response...