データ構造シリーズ パート1
このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをRubyでゼロから実装し、実際に問題を解くのに使います。これを終えると、Arrayをスタックやキューとして、Hashを検索表として使うことが、習慣ではなく説明できる選択になります。開始RubyにあるのはArray、Hash、Setで、ヒープも優先度付きキューも連結リストも木もありません。このパスでは、走査がeachブロックひとつで済むRubyで足りない構造をひとつずつ作り、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。
377 レッスン228 チャレンジ702 クイズの問題
各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをRubyで開きます。まだRubyで教えていない3つのコースは、ステップの後にまとめて載せています。
Arrayをスタックやキューとして、Hashを検索表として使うことが、習慣ではなく説明できる選択になります。開始Array、Hash、Setの先で、Rubyがあなたに任せているすべてです。ここで書くヒープは、グラフのステップで必要になる優先度付きキューです。開始Array#sortは安定性を約束していません。このステップを終えれば、8つのソートのうちどれならその約束ができたのかがわかります。開始SystemStackError(stack level too deep)を発生させ、Rubyはデフォルトでは末尾呼び出しを最適化しないので、これほど寛容な言語でも深さには気を配る価値があります。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページWrite real code, query databases, build websites, and master AI prompts. Our interactive lessons cover every skill modern developers need.
Stay consistent and watch your progress grow! Track your daily coding habit, protect your streak with freeze days, and earn rewards for showing up every day.
12 days streak
Return tomorrow to keep your streak!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
Double or Nothing
Day 5 of 7
Streak Freeze
2 left
Take your coding journey on the go! No setup, no downloads - just open and start coding. Available on iOS, Android and Web with 4.9 star ratings.
Compete on global leaderboards, invite friends to earn rewards, and celebrate each other's wins. Coding is better with friends!
Read, listen, test yourself, ask the AI, or look up anything you've already covered. Every lesson meets you where you are.
A variable is a named container that stores a value you can reference later in your program.
In Python, you create one by writing the name, an equals sign, then the value you want to store.
The value can change over time - reassigning the name simply points it to a new value.
Earn certificates for every course you complete. Add them to your LinkedIn profile and resume to showcase your coding expertise to employers.
Arrayはスタックにもキューにもなり、Hashは挿入順を保つハッシュテーブルで、Setは標準ライブラリにあります。その先には、ヒープも優先度付きキューも連結リストも木もありません。Rubyの面接問題でそれらが必要になれば自分で書くことが求められ、このパスでは実際に書きます。Enumerable(each、map、select、reduce)のおかげで走査は1〜2行に収まり、幅優先探索やマージもほとんど疑似コードのように読めます。ただ、それぞれの呼び出しはコストのかかるループであることを忘れないでください。そのコストを数えられるようになることこそ、このパスで学ぶことです。Array#sortは安定性を約束していないので、等しい要素の順序を保つ必要があるときは、sort_by.with_index { |x, i| [x, i] }のようにペアでソートすることです。Arrayはスタック(push、pop)にもキュー(push、shift)にもなる動的配列、Hashは挿入順を覚えているハッシュテーブル、標準ライブラリのSetはハッシュベースのセットです。これで全部です。ヒープ、優先度付きキュー、連結リスト、木、トライ木、グラフはないので、それらはステップ1と2で自分で作ります。bsearch_indexとinsertでソート済みを保つ方法(プッシュごとにO(n))、そしてArrayの上に二分ヒープを書く方法(プッシュもポップもO(log n))です。面接官が求めているのは3つ目で、それを作るのがステップ2です。Hashが挿入順を保つことは、アルゴリズムにとってなぜ重要なのですか?Hashで、追い出しは最も古いエントリを取り除くshiftです。多くの言語では、これにハッシュテーブルと双方向連結リストが必要です。どちらもステップ1と2で作る構造なので、Rubyが代わりに何をしてくれているのかを説明できるようになります。Hash.new { |h, n| h[n] = n < 2 ? n : h[n - 1] + h[n - 2] }のようにデフォルトブロック付きのHashにできます。またn[i]で整数のビットiを直接読めます。C++なら(n >> i) & 1と書くところです。