STL応用問題集
問題出典 : Nowcoder
スタックとソート (nowcoder.com)
問題の解析
各要素の挿入に対して二つの動作が可能である
スタックに挿入
直接出力(挿入後に即座に削除)
この二つの動作をどう選択するか?
問題の要件:出力されるシーケンスは降順に並べる(ソート不可能な場合は辞書式で大きいものに近づける)
最大値が最初にスタックから取り出されるのが最適
最大値であ ...
8月8日 11:29 投稿
栈データ構造を用いた文字列の検証と数式評価の実装
LeetCode 20. 有効な括弧 (Valid Parentheses)
スタック(Stack)はLIFO(後入れ先出し)の特性を持つため、括弧の対称性チェックのようなネスト構造の検証に適しています。実装の際は、不一致が発生するすべてのエッジケースを事前に分析することが重要です。
アルゴリズムのアプローチとして、左括弧が現れた際に、対応する「期待される右括弧」をスタックにプッシュする ...
8月3日 23:58 投稿
C言語による動的配列スタックの実装と基本操作
スタックはLIFO(Last In, First Out)のデータ構造であり、主な操作として初期化、解放、空判定、プッシュ(要素追加)、ポップ(要素削除)、サイズ取得、トップ要素参照が存在する。本実装では、C言語を用いて動的メモリ確保に基づくスタックを3つのファイルで構成し、安全性と拡張性を重視した設計を行う。
ヘッダーファイル:Stack.h
このファイルでは、スタックの抽 ...
7月31日 06:44 投稿
スタック構造を活用したアルゴリズム問題の解法集
1. 隣接する重複文字の削除
問題概要
文字列内で連続する同じ文字をすべて削除した結果を返します。
解法のポイント
各文字を順番に確認し、直前の文字と比較して同じであれば削除、異なれば保持します。この操作はスタックの「後入れ先出し」特性と一致します。実際にスタックオブジェクトを使用すると最終的な文字列構築が面倒なため、配列を使ってスタック動作をシミュ ...
7月19日 18:51 投稿
C++スタック、キュー、優先度付きキューの基礎と実装
スタック(Stack)
スタックはLIFO(Last In First Out)のデータ構造であり、コンテナアダプタとして実装されます。標準ライブラリではstd::stackが提供されており、主な操作は以下の通りです。
メンバ関数説明empty()スタックが空かどうかを判定size()要素数を取得top()最上位の要素への参照を取得push()要素を先頭に追加pop()最上位の要素を削除
最小スタックの実装
定 ...
7月2日 18:28 投稿
AtCoder Beginner Contest 333 スolved 解説
概要
AtCoder Beginner Contest 333 の Implement 問題を解説します。難易度は A-D が初心者〜中級者向け、E はGreedy + スタック操作の基礎知识点が必要です。
A - Three Threes
入力された整数 \(n\) を \(n\) 回連続して出力する問題です。
制約が \(1 \le n \le 9\) と非常に小さいため、ループで単に出力すればOKです。
#include <iostream>
using namespac ...
6月29日 20:56 投稿
松枝作成シミュレーションのためのキュー・スタックアルゴリズム
松針を松枝に挿入する加工工程をプログラムで再現する問題を考えます。この工程は特定の制約条件下でデータを処理する必要があり、適切なデータ構造の選択が解決の鍵となります。
与えられるものは、供給装置に並んだ N 枚の松針、容量 M の一時保管箱、容量 K の松枝です。松枝への挿入は、常に前回挿入した松針以下のサイズであるという制約があります。この制約を満た ...
6月29日 19:22 投稿
Java コレクションフレームワーク - Listインタフェースの実装クラス
配列はサイズが固定されているため、拡張が必要な場合はコレクションフレームワークを使用するのが一般的である。
コレクションフレームワークの概要(java.utilパッケージ)
java.utilコレクションは 크게2つのカテゴリに分類される:
Collection:単一の要素(value)を格納
Map:キーと値のペア(key-value)を格納
Collectionはさらに細分化される:
List:順序付け ...
5月29日 22:43 投稿
-stackを使用してUnixパスを簡略化する-
問題
Unixスタイルの絶対パス('/'で始まる文字列)が与えられた場合、それを簡略化された標準パスに変換してください。
Unixファイルシステムでは、ドット(.)は現在のディレクトリを表し、2つのドット(..)は親ディレクトリ(1レベル上)に移動を表します。これらは両方とも、相対パスの一部として使用できます。複数の連続するスラッシュ('//')は、単一のスラッシュ ...
5月20日 10:00 投稿