アルゴリズムとデータ構造
30 件の記事
オープンアドレスハッシュテーブルとスイステーブル
Goのブログ記事「Faster Go maps with Swiss Tables」を読んだことをきっかけに、オープンアドレス法とスイステーブル(Swiss Table)について整理した記事です。ハッシュの衝突を解決する手法や、キャッシュ効率の高いハッシュテーブルを設計するためのポイントを紹介します。
スライディングウィンドウの実装|尺取り法をGoで書く
スライディングウィンドウアルゴリズムの実装を解説。固定・動的ウィンドウサイズ、配列の部分和を検索するユースケース(レートリミッター等)、ウィンドウをスライドさせる処理の流れをGoコードで紹介します。
2分探索木の探索パターンを図解で理解する
2分探索木の探索パターンを解説。DFS(先行順・中間順・後行順)、BFS、一筆書き法による走査で木構造の走査順序をマスターする実践ガイドです。
尺取り法とは|計算量を落とすアルゴリズムを図解
尺取り法(Two Pointer Technique)とは何か。左右のインデックスを使った探索の仕組み、O(N²)からO(N log N)への計算量改善の仕組みをGoコードの例で解説します。
アルゴリズムとデータ構造 - ハッシュマップ
アルゴリズムとデータ構造を学ぶシリーズの記事。ハッシュマップの仕組みを取り上げ、平均O(1)のアクセスや、衝突解決のオープンアドレス法とチェイン法の違いを、Goでの基本的な実装例とともに解説する。
隣接リストと隣接行列の違い|グラフ表現の使い分け
隣接リスト(O(V+E)の空間・疎グラフに有利)と隣接行列(O(V²)の空間・O(1)の辺判定)を比較。有向・無向グラフのGo実装例とともにグラフの表現方法を解説します。
スタックとキューの実装
Goでスタックとキューをそれぞれ実装してみた記事です。スライスを使ったパターンと連結リストを使ったパターンの2通りで、LIFOのスタックとFIFOのキューを実装し、push・popやenqueue・dequeueといった操作を時間計算量O(1)で構築する方法を、パターン別に比較しながら紹介します。
連結リストのランナーテクニック
連結リストの走査に役立つ「ランナーテクニック」についてまとめた記事です。『世界で闘うプログラミング力を鍛える本(コーディング面接189問とその解法)』で紹介されていて初めて知った、2つのポインタを異なる速度で進めるこの手法の考え方と使いどころを解説します。
アルゴリズムとデータ構造の基本の復習
コーディングクイズを解く日課の再開にあたり、アルゴリズムとデータ構造の基本を総復習した記事。配列や文字列、ハッシュテーブル、連結リスト、木、スタック、キュー、ソート、計算量といった基礎を、コーディング問題を意識して整理する。
カウントソートの実装|O(n+k)の整列をGoで
比較を使わずにソートするカウントソートを、実装を通じて学ぶ記事。要素をカウントして累積和を求めることで線形時間O(n)を実現する仕組みを、Goでの実装例とともに、その数学的な考え方から解説する。
バックトラッキングの実装
バックトラッキングアルゴリズムを実装で学ぶ。制約満たし探索、重複なし組み合わせ、再帰処理、木構造による考え方でGoの実装例から理解を深める実践ガイドです。
アルゴリズム図鑑 増補改訂版 絵で見てわかる33のアルゴリズム
『アルゴリズム図鑑 増補改訂版 絵で見てわかる33のアルゴリズム』の書評。ソートや探索をはじめとする33のアルゴリズムを、図解を中心にわかりやすく解説する一冊。動きを図で直感的に理解でき、リファレンスとして手元に置いておきたくなる。
アルゴリズムとデータ構造 - バブルソート
アルゴリズムとデータ構造を学ぶシリーズの記事。比較ベースのソートであるバブルソートを取り上げ、隣り合う要素を交換していく仕組みとO(n²)の計算量を、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - ヒープソート
アルゴリズムとデータ構造を学ぶシリーズの記事。二分ヒープ木を使ってO(n log n)でソートするヒープソートを取り上げ、ヒープの構築やルートの取り出しの手順を、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - 挿入ソート
アルゴリズムとデータ構造を学ぶシリーズの記事。配列をソート済みと未ソートに分け、1要素ずつ並べていく挿入ソートを取り上げ、O(n²)の計算量とGoでの実装例をあわせて解説する。
アルゴリズムとデータ構造 - マージソート
アルゴリズムとデータ構造を学ぶシリーズの記事。分割統治法によるマージソートを取り上げ、最悪O(n log n)の計算量や、再帰的な分割とマージの手順を、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - クイックソート
クイックソートを解説。平均O(n log n)・最悪O(n²)の計算量、ピボット選択、low/highへの分割、ランダム化したGo実装を紹介します。
アルゴリズムとデータ構造 - 選択ソート
アルゴリズムとデータ構造を学ぶシリーズの記事。最小の要素を繰り返し探して所定の位置に入れ替える選択ソートを取り上げ、O(n²)の計算量とGoでの実装例をあわせて解説する。
二分探索木(BST)とは|計算量とGoでの実装
二分探索木(BST)を解説。平均O(log n)の探索・挿入、DFS(先行順・中間順・後行順)とBFSによる走査を、GoでのBST実装例とともに紹介します。
アルゴリズムとデータ構造 - ヒープ
優先度付きキューを実現するmin-heap/max-heapの仕組みを解説。O(log n)の挿入・削除と、Goでのヒープ実装を紹介します。