#アルゴリズム
16 件の記事
スライディングウィンドウの実装|尺取り法をGoで書く
スライディングウィンドウアルゴリズムの実装を解説。固定・動的ウィンドウサイズ、配列の部分和を検索するユースケース(レートリミッター等)、ウィンドウをスライドさせる処理の流れをGoコードで紹介します。
尺取り法とは|計算量を落とすアルゴリズムを図解
尺取り法(Two Pointer Technique)とは何か。左右のインデックスを使った探索の仕組み、O(N²)からO(N log N)への計算量改善の仕組みをGoコードの例で解説します。
連結リストのランナーテクニック
連結リストの走査に役立つ「ランナーテクニック」についてまとめた記事です。『世界で闘うプログラミング力を鍛える本(コーディング面接189問とその解法)』で紹介されていて初めて知った、2つのポインタを異なる速度で進めるこの手法の考え方と使いどころを解説します。
再帰処理の苦手なところ
再帰処理を書く際につまずきやすい、return文の扱いやコールスタックの評価について解説する記事です。再帰が得意ではないという筆者自身の視点から、処理がどのように積み重なって評価されるのかを、克服のための考え方とともに整理します。
アルゴリズムとデータ構造の基本の復習
コーディングクイズを解く日課の再開にあたり、アルゴリズムとデータ構造の基本を総復習した記事。配列や文字列、ハッシュテーブル、連結リスト、木、スタック、キュー、ソート、計算量といった基礎を、コーディング問題を意識して整理する。
カウントソートの実装|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での実装例をあわせて解説する。
みんなのコンピュータサイエンス
『みんなのコンピュータサイエンス』の書評。コンピューターサイエンスの全体像を、要点を押さえてコンパクトに掴める一冊。個々のトピックを深掘りするより、CSという分野の見取り図をつかみたいときにちょうど良い。
JavaScriptで始めるアルゴリズム
JavaScriptを使って基本的なアルゴリズムを学ぶ記事です。リストや配列を先頭から順に比較していく線形探索(リニアサーチ)や二分探索といった探索アルゴリズムと、選択ソートやバブルソートといった整列アルゴリズムを、実際に実装しながら仕組みを理解していきます。