LeetCodeを日本語で始める

コーディング面接問題 20 問と地続き

英語の問題集 LeetCode を、日本語のコーディング面接問題 20 問から始めるための頁です。始め方の 5 つの手順、判定と英語の問題文の読み方、関数の答えを class Solution の形に移す方法、20 問と LeetCode の問題の対応表をまとめました。

文 ゆめさく ・ 2026年10月26日

最初に答え

LeetCode は、英語で書かれたコーディング面接の問題集です。日本語で始めるなら、1 問ごとに次の 3 つの順で進めると、英語でつまずかずに済みます。

  1. 同じ型の問題を、日本語のコーディング面接問題で先に解く (頁の中でその場で書いて、例を通せます)
  2. 同じ考え方の LeetCode の問題を開き、英語の問題文と Example を読む
  3. 自分の答えを LeetCode の書き方 (class Solution) に移して、Submit する

最初の型は「配列とハッシュ」、最初の 1 問は 1. Two Sum です。この頁の下に、日本語の 20 問と LeetCode の問題の対応表を、LeetCode で Easy の問題がある型から順に並べました。

LeetCode とは

LeetCode は、関数を 1 つ書いて提出すると、用意された試験の入力で自動で採点してくれる問題集のサイトです。海外のテック企業のコーディング面接の練習に、よく使われています。

項目中身
問題の数全 4,095 問。Easy 974、Medium 2,135、Hard 986 (有料限定の問題を含む総数)
書ける言語Two Sum では 19 の言語。Python3、JavaScript、TypeScript、Java、C++、Go など
問題文英語。日本語の版は無い
料金無料で始められる。有料の Premium もある

数は LeetCode の公開の API で 2026 年 10 月 26 日に取った値です。問題は増え続けるので、数は目安として見てください。

日本語の版はありません。問題文に訳は付いておらず (API で Two Sum の訳の欄が空)、公式の手引き (support.leetcode.com) も英語だけです。中国語には別のサイト leetcode.cn があります。日本語で読みたいときは、この頁の対応表の左の問題を先に解くか、ブラウザの翻訳を使います。

日本の競技プログラミングのサイト (AtCoder など) は、決まった時間のコンテストで順位を競う形が中心です。LeetCode にもコンテストはありますが、中心は 1 問ずつ関数を書いて提出する練習で、面接でよく出る型を繰り返すのに向いています。面接の準備なら LeetCode、時間内に解く速さを競いたいなら AtCoder、と目的で選びます。

無料と有料

この頁で扱う 19 問は、2026 年 10 月 26 日の時点で、どれも無料のアカウントで開けます (LeetCode の API の isPaidOnly が false)。始めるのに Premium は要りません。

ただし、公式の解説は問題によって Premium 限定です。19 問のうち無料で読めるのは 6 問 (1、78、283、387、443、704) だけで、残りの 13 問は Premium 限定でした。対応表の各行に「解説 無料」か「解説 Premium」かを付けています。解説が読めない問題では、ほかの人が投稿した解き方を読みます。

公式の手引きによると、Premium で増えるのは、Premium 限定の問題と解説、会社ごとの問題の絞り込み、Explore の Premium 限定の教材、会社を決めた模擬面接、採点の優先です。料金は変わることがあるので、要るか迷ったら LeetCode の公式の頁で確かめてください。

始め方 5 つの手順

  1. アカウントを作る。leetcode.com で登録します。メールのほか、ほかのサービスのアカウントをつないで登録することもできます
  2. 言語を決める。問題の画面の右のエディタの上で言語を切り替えます。Python は Python3 を選びます。一覧の Python は Python 2.7 で、Python3 が Python 3.14 です (公式の手引きの言語の環境の表、2026 年 10 月 26 日に確認)。この頁の答えも Python3 で書いています
  3. 型の順に選ぶ。問題の一覧は難易度で絞れますが、闇雲に Easy を解くより、この頁の対応表の順に進むほうが、型が 1 つずつ身に付きます
  4. 1. Two Sum を開く。日本語のTwo Sum をハッシュマップで解くを先に解いておくと、英語の問題文がほぼ読めるはずです
  5. Run で試して、Submit で出す。Run は Testcase の欄の入力で動かします (はじめは Example が入っていて、自分で入力を足せます)。Submit は LeetCode が用意した全部の試験で採点します。Accepted と出れば合格です
日本語で先に解く理由

英語を読む力と、解き方を考える力を、同時に使うと手が止まります。日本語で解き方を先に身に付けておけば、LeetCode では英語を読むことだけに頭を使えます。2 回目は同じ型の別の問題を、LeetCode でいきなり解いてみてください。

画面の見方と、判定の読み方

問題の画面には、問題文、言語を選んで書くエディタ、試験の入力 (Testcase) と結果の欄があります。問題文の側のタブで、公式の解説、ほかの人の解き方、自分の提出の履歴に切り替えます。タブの英語の名前は画面の作り直しで変わることがあるので、この頁では日本語の意味で書いています。公式の解説は Premium 限定の問題が多いので、無料で読むならほかの人の解き方を使います。

Submit すると、結果が英語の 1 行で出ます。よく出る物と、次にやることは次の通りです。

判定意味次にやること
Accepted全部の試験に合格計算量を言葉で言えるか確かめる
Wrong Answer答えが違う入力があった出てきた入力を Testcase に貼って Run し、手で追う
Time Limit Exceeded時間内に終わらなかった二重の繰り返しを、ハッシュや二分探索で減らせないか考える
Runtime Error実行中に落ちた空の配列、長さ 1、範囲の外の位置を先に疑う
Compile Error書き方の誤りで動かない言語の選び間違い (Python と Python3 など) と字下げを見る

手元では合うのに Wrong Answer や Runtime Error になるときは、クラスの変数や関数の外の変数を疑います。公式の手引きによると、LeetCode は全部の試験の入力を同じプログラムで続けて動かすので、前の入力の値が次の入力に残ります。値は関数の中で毎回作り直します。

Accepted のあとに出る数の読み方

Accepted のあとには、かかった時間 (Runtime) と使ったメモリ (Memory) が、ほかの人の提出と比べた割合と一緒に出ます。この割合は、面接の合否とも LeetCode の合格とも関係しません。まず自分の答えの計算量 (O(n) か O(n²) か) を言葉で言えるかを確かめ、割合が低くても計算量が同じなら、気にしなくてかまいません。割合を上げるための細かい書き換えより、次の型に進むほうが面接の力になります。

型のタグとヒント

問題ごとに、型のタグとヒントが付いています。たとえば Two Sum のタグは Array と Hash Table、ヒントは 3 つです (API で確かめた)。タグは答えの道具をほぼ言ってしまうので、最初は見ずに考え、10 分ほど止まったらタグ、次にヒントを 1 つずつ開きます。Two Sum のヒントも、総当たりの解き方から始めて、ハッシュマップで速くする道へ順に案内します。1 つ開くたびに、自分で続きを考えてから次を開きます。

英語の問題文の読み方

問題文の英語は、同じ言い回しが何度も出ます。次の語を押さえると、ほとんどの Easy の問題文は読めます。ブラウザの翻訳を使ってもかまいませんが、数の決まりの行 (Constraints) は訳さずに読むほうが確実です。

英語意味気をつけること
Given〜を受け取る引数の名前と型をここで確かめる
return〜を返す画面に出す (print) のではなく、返り値で返す
index、indices位置、位置の複数形0 から数える
in any orderどの順で返してもよい順を決められているときは、この語が無い
You may assume〜と考えてよい答えが必ずある、などの約束。端の場合を減らせる
distinctどれも違う値同じ値が無いので、重なりの処理が要らない
subarray、substring続いた一部間を飛ばしてはいけない
subsequence順を保った一部間を飛ばしてよい
in-placeその場で書き換える新しい配列を作らず、受け取った配列を直す
sorted in non-decreasing order小さい順 (同じ値は並んでよい)二分探索やツーポインタが使える合図
Constraints入力の大きさの決まり次の段の目安で、使える計算量を逆に読む
Follow up余裕があれば先に普通に解き、あとで挑む

Constraints の数は、解き方を選ぶ手がかりです。この頁の目安は、入力の長さが 1,000 ほどまでなら二重の繰り返し (O(n²)) でも間に合うことが多く、1 万を超えたら O(n) か O(n log n) を考える、です。言語やサイトの決まりで変わるので、目安として使ってください。

答えの書き方 関数から class Solution へ

ゆめさくのコーディング面接問題は、答えを 1 つの関数で書きます。LeetCode は、言語ごとに決まった型 (テンプレート) があり、その中に書きます。Two Sum を例に、同じ答えを移すとこうなります。

Python3

ゆめさくの答え (関数) です。

Python

def pair_with_target(
    nums, target
):
    seen = {}
    for i, x in enumerate(nums):
        need = target - x
        if need in seen:
            j = seen[need]
            return [j, i]
        seen[x] = i
    return []

LeetCode に出す形です。

Python

class Solution:
    def twoSum(
        self,
        nums: List[int],
        target: int,
    ) -> List[int]:
        seen = {}
        for i, x in enumerate(nums):
            need = target - x
            if need in seen:
                j = seen[need]
                return [j, i]
            seen[x] = i
        return []

大きく変わったのは 3 つです。class Solution の中に入れること、最初の引数に self を足すこと、関数の名前をテンプレートの twoSum にすることです。型の注釈 (List[int]) もテンプレートに付いてきます。名前と引数はテンプレートのまま変えません。変えると採点の側が呼べなくなります。手元で動かすときは、ファイルの頭に from typing import List を足してください。

JavaScript

JavaScript

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (
  nums, target
) {
  const seen = new Map();
  const n = nums.length;
  for (let i = 0; i < n; i++) {
    const x = nums[i];
    const need = target - x;
    if (seen.has(need)) {
      const j = seen.get(need);
      return [j, i];
    }
    seen.set(x, i);
  }
  return [];
};

JavaScript は、テンプレートの var twoSum = function の中に中身を書くだけです。ゆめさくの答えの function pairWithTarget の中身を、そのまま移せます。上のコメントの @param と @return は、引数と返り値の型の説明なので、消さずに読みます。

この 2 つの答えは、ゆめさくの Two Sum の例 1 (nums = [3, 8, 12, 5]、target = 17) を Python 3.14 と Node.js 24 で動かし、どちらも [2, 3] を返すことを 2026 年 10 月 26 日に確かめました。

木の問題

木を受け取る問題では、LeetCode が TreeNode という形で根を渡します。定義はテンプレートの頭のコメントに書いてあります (val、left、right)。ゆめさくの木の問題も、根から left と right をたどる同じ書き方なので、そのまま移せます。

どの型から解くか 20 問の対応表

下の表は、LeetCode で Easy の問題がある型を先に並べ直した物です (ゆめさくの一覧とは順が違います)。Easy の無い再帰と文字列は、最後に回しました。型の中も Easy を先にしています。左を日本語で解いてから、右の LeetCode に進んでください。

1. 配列とハッシュ

2. ツーポインタ

3. スタック

5. 木 (DFS と BFS)

6. 動的計画法 (DP)

7. 再帰

8. 文字列

LeetCode の番号、題、難易度、公式の解説が無料か Premium かは、LeetCode の公開の API で 2026 年 10 月 26 日に取った値です。問題そのものはどれも無料で開けます。

1 問の進め方と、解けないとき

  1. 問題文と Example を読み、手で Example を 1 つ解く
  2. まず素直な解き方 (全部を試す) を言葉で言い、その計算量を言う
  3. 速くする道具 (ハッシュ、ツーポインタ、二分探索、DP) のどれが使えるかを考える
  4. 書いて Run し、Submit する

手が止まったら、時間を決めて切り上げます。この頁では 20 分を目安にしています。止まったら、日本語の同じ型の問題の「まず考える手順」の節を読み、それでも進まなければ、ほかの人の解き方を 1 つ読みます。公式の解説は、対応表で「解説 無料」の問題なら読めます。読んだあとは解説を閉じて、何も見ずに書き直します。数日あけてもう一度解き、書けなかった問題だけを残しておくと、復習の量を減らせます。

続け方 毎日 1 問と連続の記録

LeetCode には、毎日 1 問が出される Daily Coding Challenge があります。毎日解くと連続の記録 (火の印の streak) が伸び、1 か月続けるとその月のバッジがもらえます。公式の手引きによると、解き忘れた日は Time Travel Ticket で埋め合わせでき、使えるのは 1 か月に 3 枚まで、同じ暦の年の中の日だけです。日付は UTC で切り替わるので、日本では朝 9 時に次の問題になります。

ただ、毎日の問題は型の順に並んでいません。この頁の 20 問を終えるまでは、対応表の順を先にし、毎日の問題は Easy の日だけ解く、くらいがちょうどよいはずです。

20 問のあとに進む問題リスト

LeetCode の問題を選ぶときは、海外で広く使われている問題リストを 1 つ決めて進むのが近道です。ゆめさくの 20 問のうち何問が各リストに入っているかも並べました。

リスト問題の数20 問のうち入っている数
Blind 75759 問
Grind 757511 問
NeetCode 15015013 問
Top Interview 15015014 問

Blind 75 は、面接で頻出の問題を絞った古くからの定番です。LeetCode の公開リストは 1 問足された 76 問の版で、入っている数もこの版で数えました。Grind 75 は、Blind 75 の作者が作り直した版で、週ごとの順があります (75 問は既定の設定のとき)。NeetCode 150 は型ごとに並べた 150 問、Top Interview 150 は LeetCode 公式の学習プランです。

最初の 1 本は、LeetCode の中で完結する Top Interview 150 か、量が少ない Grind 75 が始めやすいはずです。どのリストも、ゆめさくの 20 問で型を一通り解いたあとなら、Easy と一部の Medium は読み進められます。

面接で話しながら解く練習

コーディング面接では、正しく書けることと同じくらい、考えを口に出せることが見られます。LeetCode で Accepted が出たら、次の 3 つを声に出して言ってみてください。

  • 最初に考えた素直な解き方と、その計算量
  • どの道具で速くしたか、なぜそれが使えると思ったか
  • 端の場合 (空、長さ 1、全部同じ値) をどう扱ったか

ゆめさくのコーディング面接問題には、1 問ずつ「面接での話し方の例」の節があります。LeetCode で解いたあとに、そこと比べると練習になります。言葉で答える技術の問いは面接問題にあります。

よくある疑問

Q. 英語が苦手でも続けられますか

続けられます。問題文の英語は決まった言い回しが多く、この頁の語の表でほとんど足ります。日本語で同じ型を先に解いておけば、英語は答えの確かめに使うだけになります。

Q. Python と JavaScript のどちらで解けばいいですか

ふだん使う言語でかまいません。迷ったら Python3 が、書く量が少なく読みやすいので始めやすいです。ゆめさくの 20 問は Python、JavaScript、Go の 3 つの答えを載せています。

Q. 何問解けば面接に間に合いますか

決まった数はありません。数より、型ごとに「見たことの無い問題でも、どの道具を使うか言える」状態になったかで決めます。まず日本語の 20 問、次に問題リストを 1 本、の順をおすすめします。1 日 1 問なら、日本語と LeetCode で 20 問を解くのに 6 週ほど、Grind 75 はそのあと 2 か月半ほどが目安です。

Q. 国内の転職サービスのコーディングテストの対策にもなりますか

出る型は同じなので、練習になります。ただ、国内の試験には、入力を標準入力から読んで画面に出す形の物があります。LeetCode は関数で受け取って返す形なので、試験の前に入力の読み方だけ練習しておくと安心です。

Q. 有料の Premium は要りますか

始めるのには要りません。この頁の 19 問は無料で開けます。公式の解説が Premium 限定の問題は 13 問ありますが、ほかの人の解き方で足ります。会社ごとの問題の絞り込みや模擬面接が要る段になったら、料金を LeetCode の公式の頁で確かめてから決めてください。

出典

  • LeetCode 公開の GraphQL API。各問題の番号、題、難易度、無料かどうか、公式の解説が Premium 限定か (question の isPaidOnly と solution.paidOnly)、タグとヒント、問題の総数 (allQuestionsCount)、言語の一覧、Top Interview 150 の問題の数 (2026 年 10 月 26 日に取得)
  • LeetCode の公式の手引き (support.leetcode.com)。言語の環境 (What are the environments for the programming languages?)、Premium の中身 (What will I get with a premium subscription?)、Time Travel Ticket (What Are Time Travel Tickets?)、試験の入力 (How to create test cases on LeetCode?)、クラスの変数の注意 (I encountered Wrong Answer/Runtime Error for a specific test case...) (2026 年 10 月 26 日に確認)
  • Grind 75 の問題の一覧。作者のリポジトリ yangshun/tech-interview-handbook の問題データ (2026 年 10 月 25 日に取得)
  • Blind 75 の問題の一覧。作者が案内する LeetCode の問題リスト (76 問の版、2026 年 10 月 25 日に取得)
  • NeetCode 150 の問題の一覧。neetcode.io のロードマップと同じ並びの公開の一覧 (2026 年 10 月 25 日に取得)
  • ゆめさくのコーディング面接問題 20 問。例は Python 3.12、Node.js 22、Go 1.24 で回して確かめています (2026 年 10 月 24 日)

次の一歩

まず日本語のコーディング面接問題で 1 つの型を解き、同じ型の LeetCode に進んでください。面接の前に何から準備するかが分からない人は、転職診断で次にやることを 1 つ決められます。1 人で続けるのが不安なら、ゆめさくコードで基礎から作品づくりまで進められます。