
コーディング面接で
アルゴリズムのチートシートに、
出題の頻度は、海外でよく使われる定番の問題リスト 4 本 (Blind 75、NeetCode 150、Grind 75、LeetCode Top Interview 150) に何本入っているかで、よく出る・ときどき出る・少なめ の 3 段階に分けています。少なめは、
難度の目安
- 型を
1 つ 知っていれば 解ける 基本の 問い。 LeetCode の Easy ほど - 型を
選び、 端の 場合まで 詰めて 解く 問い。 LeetCode の Medium ほど - 型を
組み合わせるか、 計算量を 一段縮める 工夫が 要る 問い。 Medium の 難しい 物と Hard - いく
つもの 操作を 持つ仕組みを、 データの 持ち方から 設計して作る問い
ツーポインタ
ソート
済み配列の Two Sum を ツーポインタで解く 小さい
順に 並んだ 整数の 並びから、 足すと 目標に なる 2 つの 位置を 返します。 両端に 指を 置いて 内側へ 寄せ、 余分な 記憶を 使わずに 探す練習です。 ツーポインタで
水を 最も 多く ためる 2 本の 板を選ぶ 高さの
違う 板の 並びから 2 本を 選び、 間に ためられる 水の 量の いちばん 大きい 値を 返します。 両端に 指を 置き、 低い側の 指だけを 内側へ 寄せる 理由まで 言える 練習です。 ソートと
ツーポインタで 目標に いちばん近い 3 つの 和を 求める 整数の
並びから 3 つを 選んで 足し、 目標に いちばん近い 和を 返します。 並べ替えてから 1 つを 決め、 残りの 2 つを 両端の 指で 寄せて 探す練習です。 3 本の
指で 0 と 1 と 2 の 並びを 1 回で 並べ替える 0 と
1 と 2 だけが 入った 並びを、 その 場で 小さい 順に 並べ替えて 返します。 3 本の 指で 並びを 4 つの 区画に 分け、 1 回なめるだけで 仕分ける 練習です。 まん中から
広げて 最も 長い回文の 部分 文字列を探す 文字列の
中で、 前から 読んでも 後ろから 読んでも 同じに なる、 いちばん長い ひと 続きの 部分を 返します。 まん中に 2 本の 指を 置き、 両側へ 広げて 確かめる 練習です。
解いた
言葉で