
コーディング面接で
アルゴリズムのチートシートに、
出題の頻度は、海外でよく使われる定番の問題リスト 4 本 (Blind 75、NeetCode 150、Grind 75、LeetCode Top Interview 150) に何本入っているかで、よく出る・ときどき出る・少なめ の 3 段階に分けています。少なめは、
難度の目安
- 型を
1 つ 知っていれば 解ける 基本の 問い。 LeetCode の Easy ほど - 型を
選び、 端の 場合まで 詰めて 解く 問い。 LeetCode の Medium ほど - 型を
組み合わせるか、 計算量を 一段縮める 工夫が 要る 問い。 Medium の 難しい 物と Hard - いく
つもの 操作を 持つ仕組みを、 データの 持ち方から 設計して作る問い
木 (DFS と BFS)
深さ優先探索 (DFS) で
二分木の 深さを 求める 二分木の
根から 一番 遠い 葉までの 段の 数を 返す。 左右の 子の 深さを 先に 求めて 1 を 足す、 深さ優先の 再帰の 練習です。 再帰で
2 本の 二分木が 同じか 確かめる 2 本の
二分木を 受け取り、 形も 値も まったく 同じかを 返します。 根を 比べ、 左どうし、 右どうしを 同じ 関数に 任せる、 木の 再帰の いちばん基本の 練習です。 再帰で
二分木を 左右反転する 二分木の
すべての 節で 左の 子と 右の 子を 入れ替え、 鏡に 映した 木を 返します。 下の 木を 先に 反転してから 付け替える、 木の 再帰の 基本の 練習です。 深さ優先探索で
二分木の 根から 葉までの 合計を 調べる 二分木の
根から 葉までの 道で、 値の 合計が 目標の 数に なる物が あるかを 調べる。 残りの 数を 子へ 渡しながら 潜る、 深さ優先の 再帰の 練習です。 再帰で
二分木の いちばん長い道の 長さを 求める 二分木の
中で、 いちばん離れた 2 つの 節を 結ぶ 道の 長さを、 辺の 数で 返します。 下から 高さを 返しながら、 ついでに 最長の 道を 数える、 木の 再帰の 練習です。 再帰で
二分木の 高さが 釣り合っているか 確かめる 二分木の
どの 節でも、 左と 右の 高さの 差が 1 以下かを 返します。 下から 高さを 返し、 崩れを 見つけたら 印を 返して 止める、 木の 再帰の 練習です。 幅優先探索 (BFS) と
キューで 二分木を 段ごとに読む 二分木の
値を、 上の 段から 順に、 段ごとの 並びに まとめて 返す。 待ち行列で 近い 節から 順に 見ていく、 幅優先の 読み方の 練習です。 再帰で
二分探索木の 決まりを 確かめる 二分木が
二分探索木の 決まりを 守っているかを 返します。 親と 子だけを 比べる 落とし穴を 避け、 各節に 入って よい値の 範囲を 上から 渡していく 練習です。 再帰で
二分木の 2 つの 節に いちばん近い 共通の 祖先を探す 二分木の
中の 2 つの 値に ついて、 両方を 下に 持つ節の うち、 いちばん深い節の 値を 返します。 左右の 部分木から 見つけた 物を 上へ 返し、 両側から 返った 所で 答えを 決める 再帰の 練習です。 辞書と
再帰で 前順と 中順の 並びから 二分木を 組み直す 二分木を
前順と 中順で たどった 2 つの 並びから、 元の 木を 組み直して 返します。 前順で 根を 決め、 中順で 左右を 分ける 再帰に、 位置を 引く 辞書を 組み合わせて O(n) に する 練習です。
解いた
言葉で