データ構造シリーズ パート1
このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをPHPでゼロから実装し、実際に問題を解くのに使います。これを終えると、arrayがスタックとして優秀なのはどんなときか、array_shiftがなぜキューに向かないのか、そしてすべての配列の中にあるハッシュマップが何をしてくれているかがわかります。開始PHPでは、ひとつの型がほぼすべてをこなします。arrayは順序付きのハッシュマップで、リストにも辞書にもスタックにもなります。このパスでは、配列が代わりを務めている構造と、配列では代わりになれない構造をPHPで作り、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。
377 レッスン284 チャレンジ702 クイズの問題
各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをPHPで開きます。まだPHPで教えていない3つのコースは、ステップの後にまとめて載せています。
arrayがスタックとして優秀なのはどんなときか、array_shiftがなぜキューに向かないのか、そしてすべての配列の中にあるハッシュマップが何をしてくれているかがわかります。開始SplDoublyLinkedListは自分で書いたことのある構造になり、SplMinHeapとSplMaxHeapは向きが逆なだけの同じ考え方になり、PHPに用意されていない平衡木も自分で作れるようになります。開始sort()はPHP 8.0から安定です。このステップを終えれば、その約束が何を意味するのか、8つのソートのうちどれならそれを守れるのかがわかります。開始$f = function ($n) use (&$f) { ... }のように自分自身を参照でキャプチャしなければなりません。面接で再帰的なクロージャを求められる前に、知っておきたい細部です。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページSplPriorityQueueは最大ヒープなので、ダイクストラ法では距離の符号を反転させるか、ステップ2で自作したヒープを使います。開始arrayに任せることなく解きます。開始実際のコードを書き、データベースをクエリし、ウェブサイトを構築し、AIプロンプトをマスターしましょう。インタラクティブなレッスンで現代の開発者に必要なすべてのスキルを網羅しています。
継続して進捗を見守りましょう!毎日のコーディング習慣を追跡し、フリーズ日で連続記録を守り、毎日参加することで報酬を獲得しましょう。
12 日連続
明日も戻ってきて連続記録を維持しましょう!
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
ダブル・オア・ナッシング
7日中5日目
連続記録フリーズ
2 left
コーディングの旅を持ち歩こう!セットアップ不要、ダウンロード不要 - 開いてすぐにコーディング開始。iOS、Android、Webで4.9星評価で利用可能。
グローバルリーダーボードで競い、友達を招待して報酬を獲得し、お互いの成功を祝いましょう。プログラミングは友達と一緒の方が楽しい!
読む・聴く・自分を試す・AIに聞く・学んだことを調べる。どんな学び方にも対応したレッスンです。
変数は、後でプログラム内で参照できる値を格納する、名前のついた入れ物です。
Pythonでは、名前、イコール記号、格納したい値の順で書くことで作成します。
値は後から変えられます。再代入すると、名前は新しい値を指すようになります。
完了したすべてのコースで証明書を獲得しましょう。LinkedInプロフィールや履歴書に追加して、雇用主にプログラミングスキルをアピールしましょう。
arrayの正体。PHPのarrayは順序付きのハッシュマップです。だから$a[] = $xも$a['key'] = $xも動き、array_shiftは遅いのです。残りのすべての要素に番号を振り直すからです。本物のスタック、キュー、ハッシュテーブルを作ることで、配列のどの操作が安く、どの操作がひそかに高いのかがわかります。in_arrayは毎回の線形探索ですが、キー付きの配列に対するissetは平均で定数時間です。面接を突破する考え方は、そのページを直す考え方でもあります。&、|、^、~、<<、>>があるからです。arrayを使うという習慣をひとつ捨てればの話です。PHPの配列はリストにも辞書にもスタックにもなれるほど柔軟で、まさにそれが各操作のコストを隠してしまいます。構造を自分で作れば、PHPはアルゴリズムを考えるのに十分な言語であり、PHPが仕事なら面接で使うのに自然な言語でもあります。SplStackとSplQueueはスタックとキューで、どちらもSplDoublyLinkedListの上に作られています。SplMinHeapとSplMaxHeapはヒープ、SplPriorityQueueは優先度順の最大ヒープ、SplFixedArrayは整数インデックスの固定長配列で、arrayより少ないメモリで済みます。ハッシュテーブルには素のarrayを使います。木、トライ木、グラフのクラスはないので、それらはステップ1と2で自分で書きます。array_shiftを使うと遅いのですか?array_shiftの上に作ったキューは、デキューのたびにO(n)、空にするまでに2乗の時間がかかります。代わりにSplQueueを使うか、配列の先頭インデックスを持って進めていきましょう。ステップ1ではキューを自分で作ります。違いを確かめるには、それがいちばん確実な方法です。sort()は安定ですか?sort()、usort()、asort()をはじめとするソート関数は、等しい要素を元の順序のまま保ちます。8.0より前はそうした約束がなかったので、等しい要素の順序に依存するコードは、バージョンによって動作が変わることがありました。ステップ3の8つのソートのうち、マージソートと挿入ソートは安定で、クイックソートとヒープソートは安定ではありません。その理由は、ステップ3を終えればわかります。arrayです。ビットのテクニックを移植するときの落とし穴がひとつあります。&、|、^の両方のオペランドが文字列だと、PHPは各文字のバイト値に対して演算を行い、文字列を返します。まず値が整数であることを確かめましょう。$nextプロパティを持つオブジェクトとして書くのが自然だからです。初めて見るものがあれば、まずCoddyのPHPコースが無料でそこまで連れて行ってくれます。このパスは、そのコースが終わるところから始まります。