Javaのコレクションフレームワーク - ArrayListの内部実装

Javaのコレクションフレームワーク - ArrayListの内部実装 概要 ArrayListは、配列に基づいており自動拡張可能な動的配列です。その自動拡張機能により、開発において最も一般的に使用されるコレクションクラスの一つとなっています。 クラス図 ArrayListが実装しているインターフェースや継承している抽象クラスは以下の通りです。 java.util.List - リストとしての基本 ...

7月30日 04:13 投稿

第5回藍橋杯 C++ B級プログラミングコンテスト問題解説

1. ビールと飲料の購入 解法: 全探索(ブルートフォース) ビール(1缶2.3元)と飲料(1缶1.9元)の合計金額が82.3元。ビールの本数が飲料より少ない条件で計算します。浮動小数点計算の誤差を避けるため、10倍して整数で処理します。 #include <iostream> using namespace std; int main() { for (int beer = 0; beer <= 823 / 23; ++beer) { for ( ...

7月29日 17:12 投稿

アルゴリズム競技問題集:動的計画法とデータ構造の応用

問題A:連続要素の除去 この問題では、与えられたシーケンスから連続する重複要素を除去する必要があります。 解法:連続する同じ要素を1つにまとめることで、シーケンスの長さを最小化します。 #include <iostream> #include <vector> using namespace std; typedef long long ll; void process() { int elements; cin >> elements; ...

7月29日 16:55 投稿

単方向連結リストの実装と操作

目録 定義 単方向連結リストの実装 ヘッダーノードなし ヘッダーノードあり 単方向連結リストの空判定(Empty) ヘッダーノードなし ヘッダーノードあり 単方向連結リストの位置指定挿入(ListInsert) ヘッダーノードなし ヘッダーノードあり 指定ノードの後方挿入操作(InsertNextNode) 指定ノードの前方挿入操作(InsertPriorNode) 単方向連結リストの位置指定削除(L ...

7月27日 01:05 投稿

データ構造とアルゴリズム(C言語):線形リストの実装と応用

線形リスト(linear list)は、同じ特性を持つn個のデータ要素の有限シーケンスです。線形リストは実際のアプリケーションで広く使用されているデータ構造であり、一般的な線形リストには順序リスト、連結リスト、スタック、キュー、文字列などがあります。 線形リストは論理的には線形構造であり、連続した直線状の構造を持ちます。しかし、物理的な構造としては必ずしも ...

7月26日 17:02 投稿

Pythonのセット型とその活用方法

はじめに Pythonでは、セット型(set)は順序を持たず、重複しない要素の集まりです。各要素は一意であるため、同じ要素が複数存在することはできません。セット型は、要素の存在確認や重複削除などに広く使われます。本記事ではPythonにおけるセット型の概念、特徴、操作方法について詳しく説明し、実際の応用例を紹介します。 セット型の基本特性 順序なし:要素の並び ...

7月26日 03:27 投稿

連結リスト操作の基礎

要素の削除 連結リストの操作において、先頭ノードと他のノードの削除処理は異なります。他のノードは前のノードを介して削除されますが、先頭ノードには前のノードが存在しません。 先頭ノードを削除するには、単にヘッドポインタを次のノードに移動します。しかし、この特別なケースを避けるためにダミーヘッドノードを使用すると、全てのノードで一貫した削除方法が適用 ...

7月24日 21:23 投稿

2つのキューを使用したスタックの実装

2つのキューを使用したスタックの実装 問題分析 この問題は、配列やリンクリストでスタックを実装するのではなく、キューを使用してスタックを実装することを求めています。キューとスタックの関係は逆で、スタックは後入れ先出し(LIFO)の特性を持つのに対し、キューは先入れ先出し(FIFO)の特性を持っています。したがって、この問題はキューの性質をスタックの性質 ...

7月24日 20:46 投稿

睿抗省赛模拟题解

2024年問題 RC-u1 熱天気判定 1からnまでのループを行い、気温が35度以上かどうかをチェックし、指定されたルールに従ってカウントします。 void resolve() { cin >> n >> k; int result = 0, count = 0; for (int i = 1; i > temp; if (temp >= 35) { if (k == 4) count++; else result++; } k++; i ...

7月24日 18:58 投稿

平衡二分探索木 Treap と Splay の実装と応用

平衡二分探索木(Balanced BST)は、動的集合操作を効率よく扱うための重要なデータ構造である。特に Treap および Splay 木は、それぞれ異なる戦略で平衡性を保ちながら、挿入・削除・検索などの基本操作を平均 $O(\log n)$ 時間で実現する。 単回転 Treap Treap(Tree + Heap)は、各ノードにランダムな優先度(priority)を持たせ、二分探索木の性質とヒープの性質を同 ...

7月24日 03:15 投稿