アルゴリズム競技向け:シミュレーション・ビット演算・ハッシュ最適化の実践

本記事では、代表的なアルゴリズム問題を題材に、配列走査、プレフィックス和、ビット操作、ハッシュマップによる高速化の4つの核心技術を解説します。各問題は段階的に難易度が上がり、実装の背景にある設計思想と数学的洞察を重視して解説します。 1. 中央要素の条件判定(初級) 整数配列 a が与えられる。インデックス i(先頭と末尾を除く)について、a[i] ≥ a[i-1] ...

10月4日 07:33 投稿

配列内の2つの要素の和がターゲット値になるインデックスを見つけるアルゴリズム

問題概要 整数の配列と、特定の目標合計値が与えられます。この配列の中から、2つの異なる要素を選び、それらの合計が目標合計値と一致するような2つの要素のインデックスを返す関数を実装してください。各入力に対して正確に1つの解が存在すると仮定し、また同じ要素を2度使用することはできません。 例 入力: データ = [3, 5, 8, 12], 目標値 = 13 データ[1] (5) + デ ...

7月3日 22:34 投稿

LeetCode 560. 和がKの連続部分配列の個数を数える方法

LeetCode 560. 和がKの連続部分配列 この記事では、整数配列から和がKである連続部分配列の個数を数える方法を説明します。 1. 問題の理解 与えられた整数配列`nums`と整数`k`から、和が`k`である連続部分配列の個数を返す必要があります。 例 入力: nums = [1, 1, 1], k = 2 出力: 2 説明: [1,1]が2回出現(インデックス0~1と1~2) 2. 暴力的な解法 2.1 最も単純 ...

7月1日 16:49 投稿

Codeforces Round 998 (Div.3) 解説: A-D問題の解法と実装例

コンテスト参加後の復習と解法の整理を行います。問題AからDまでのアプローチとコードをまとめました。 A. Fibonacciness 5要素の数列における最大の「フィボナッチ度」を求める問題です。数列の長さが5であるため、最大でも度は3となります。各位置で成立するフィボナッチ関係の式を検討します。 具体的には、a0+a1 = a2、a1+a2 = a3、a2+a3 = a4の3つの条件が考えら ...

6月22日 17:44 投稿