🐈

LeetCodeの始め方 アルゴリズムが少しわかったような気がするまで

に公開

この記事の概要

この記事では、LeetCode初心者としてLeetCodeの始め方、解説を理解できるようになる方法を自分の経験をもとに紹介します!

この記事の対象者

前述の通り自分がLeetCode初心者なので、LeetCodeなどを含むアルゴリズム問題を勉強したことがない人や、どう始めればいいかわからない人向けの記事となっています!

LeetCodeの始め方

1. LeetCodeのアカウントを作成する

まずアカウントを作成しましょう!
アカウントを作ることで、まず形から入ることができます。
https://leetcode.com/

2. 目的を決める

LeetCodeを始めるにあたって、まず目的を決めましょう。
例えば、以下のような目的が考えられます。

  • アルゴリズムの基礎を学ぶ
  • コーディング面接の対策をする
  • プログラミングスキルを向上させる

目的を明確にすることで、モチベーションを維持しやすくなったり、どこに絞って学習するかなどを考えることができます。

3. ロードマップ、指標を確認する

LeetCodeにログインし、問題を解こうと意気込んでいると問題数が多すぎてびっくりすることがあると思います。
僕自身、初めはどこから始めればいいかわからずなんとなくEasyレベルの問題をクリックしては閉じ、を繰り返してそっとタブを閉じていました。

そこで、いくつか参考になる記事、本を発見したので紹介します。
特に、アルゴリズムの全容が全く見えていなかった自分にとって、ロードマップの確認やどんな問題を解いて進んでいけばいいかを知れたことが大きかったです!

ロードマップ

おすすめ問題集

LeetCodeの進め方

1. LeetCodeを解く!

実際にLeetCodeを解いてみます!
試しにEasyレベルの 1. Two Sum などから初めてみてください。
最初は、Easyレベルも全く歯が立たないと思います(僕だけ、、?)

2. 解説を理解できるようにする

まずは解説や他の人の解法を見てみる

僕はLeetCodeを始めるにあたり、気合を入れるために有料プランに入ってみたので公式の解説をみることができますが、無料プランでもディスカッション欄で他の人の解法を見ることができます。
時に理解が困難な場合もありますが、まずは色々な解法を見てみることをおすすめします!
今なら、ChatGPTなどに解説し直してもらうのもありかも知れません。

パターンや基礎知識の習得

初めの頃はとりあえず問題を解いて慣れるべきだと思いますが、ある程度慣れてくると闇雲に問題を解くよりもパターンや基礎知識を学んでから問題を解く方が効率的だと感じました。
以下は自分が参考にしたパターンや基礎知識の記事、書籍です。
書籍は特に、一つ目がビジュアルが多く読みやすく、二つ目が少し中級者向けの内容なのかなと感じました!

解法パターン

参考書籍

3. 解いた問題のキーポイントをメモっておく

問題を解くだけでも十分カロリーを使うのですが、もう少し頑張って解法のキーポイントをメモっておくことをおすすめします!
例えば、 27. Remove Element であれば、 配列をループで回しながらソートをするときは Two Pointer を使えばいい、などです。
一言でもいいので自分が学んだことをメモしておくと、過去の自分に感謝することができます!

4. とりあえず毎日Easy問題を1問解いてみる

最初はとにかく慣れることが大事だと思うので、毎日1問Easy問題を解いてみることをおすすめします。
時間がない日は前日に解いた問題を解説を見ずに解いてみるだけでも全然違ってくると思います!
(有料プランに入ると、毎日解かざるを得ません)

まとめ

僕的には、どの問題を解けばいいのかわからないのが一番の障壁だったので、「どこから始めればいいかわからない!」という人は僕が参考にさせていただいた記事を見てみることをおすすめします!
また、LeetCodeで問題をソートすることができるので、以下のように Array や Easy でソートして、赤枠の Frequency(出現頻度)が大きい問題を解いていくのもいいと思いました!

また、解法のキーポイントをメモすることも、自分の中でパターンを掴むのに役立ちました!

LeetCodeを解き始めて約20日経った感想

初めは全くわからなかった世界に飛び込んで問題を解き答えを見てみるだけの感覚でしたが、次第に理解できなかった解説が理解できるようになったり、異なる問題で似通ったパターンを見つけて解けるようになったりと、少しずつですが成長を感じています!
まだArrayの問題しか解いていませんが、他の分野の基礎になることは間違い無いと思うので、この調子で続けていきたいと思います!
もっと効率良い方法がある!という場合は教えていただけると嬉しいです!

参考

Aditya Y. Bhargava, なっとく!アルゴリズム 第2版 (なっとく!)
Gayle Laakmann McDowel, 世界で闘うプログラミング力を鍛える本 コーディング面接189問とその解法
LeetCode学習ロードマップ 90問まとめ
LeetCode was HARD until I Learned these 15 Patterns
NeetCode, roadmap
New Year Gift - Curated List of Top 75 LeetCode Questions to Save Your Time
14 Patterns to Ace Any Coding Interview Question

Discussion