連結リストの基本操作:要素削除、カスタム設計、反転処理

連結リストの要素削除 例:入力:head = [1,2,6,3,4,5,6], val = 6 出力:[1,2,3,4,5] 連結リストの設計 連結リストクラスで以下の機能を実装します: get(index):連結リストのindex番目のノードの値を取得します。インデックスが無効な場合は-1を返します。 addAtHead(val):連結リストの最初の要素の前に値がvalのノードを追加します。挿入後、新しいノードが連結リ ...

7月12日 18:07 投稿

C言語プログラミング:フォーマット指定子、メモリ管理、およびアルゴリズムの最適化

出力フォーマットと基本的なデータ型 C言語において、printf関数のフォーマット指定子を適切に使用することは、表示制御において重要です。整数の出力幅を指定し左寄せにするには%-8dのように記述します。マイナス記号が左寄せを指示し、数字が最小フィールド幅を表します。また、浮動小数点数の精度を制御するには%.3fを使用し、小数点以下の桁数を固定します。パーセント ...

7月11日 19:02 投稿

红包分配システムの実装とソート処理

問題概要 N人の参加者間での紅包(お年玉)の分配記録を処理し、各人の収支を計算するプログラムを作成します。入力データから各人の収入金額、支出金額、獲得紅包数を算出し、指定された条件でソートして出力します。 入力形式 最初の行には参加者数N(≤104)が与えられます。続くN行には、各参加者が発行した紅包の情報が以下の形式で記述されます: K N1 P1 N2 P2 ... ...

7月11日 16:44 投稿

LeetCodeの連結リスト問題解法:ノード交換、削除、交差検出、循環検出

ノードのペア交換(問題24) 連結リストの隣接ノードを交換する実装例。ダミーノードを使用し、3つのポインタで前後関係を管理します。 class Solution { public: ListNode* swapNodePairs(ListNode* head) { ListNode dummy(0); dummy.next = head; ListNode* current = &dummy; while (current->next && current->next-> ...

7月10日 22:22 投稿

C言語による主要なソートアルゴリズムの実装と解説

開発環境とコード規約 本記事で紹介するコードは、C言語標準規格(C99以降)を想定しており、 Visual Studio 2022などの主要な開発環境で動作します。可読性と保守性を向上させるため、変数名は論理的な意味を持つようにリファクタリングし、標準的な型定義を使用しています。 挿入ソート (Insertion Sort) 挿入ソートは、手札のトランプを整理するように、整列済みの部分 ...

7月9日 21:10 投稿

データ構造とアルゴリズム - ハッシュテーブル

1. ハッシュテーブルの基本概念 順序リストや木構造では、データ要素を検索する際にキーの比較を繰り返す必要があります。比較回数を減らすためには、データ要素の格納位置とキーの値の間に関連性を確立する必要があります。この目的のために、ハッシュ技術を用いた動的検索表が使用されます。まず、いくつかの基本概念を理解しましょう。 ハッシュ関数:データ要素のキー ...

7月8日 23:35 投稿

01ナップサック問題とその解法

ナップサック問題の概要 基本的な解決策 方法一:二次元配列を使用した01ナップサック問題 dp配列の定義 再帰式の決定 dp配列の初期化 ループ処理 import java.util.*; public class ItemManager { public static void main(String[] args) { Scanner reader = new Scanner(System.in); int itemCount = reader.nextInt(); int capacit ...

7月8日 22:25 投稿

LCT(リンクカットツリー)の基礎と応用

基本操作 LCT(リンクカットツリー)は、Splay木を使用して森を管理します。実際のエッジの追加や削除が可能です。親への参照のみを行い、子への参照はしません。 notroot: ノードがSplay木のルートである場合は0を、それ以外は1を返します。ノードがルートであるときには特別な扱いが必要なためです。 splay: 現在のノードを現在のSplay木のルートに回転させます。 Acce ...

7月8日 22:19 投稿

動的計画法によるナップサック問題と等和分割問題の解法

46.研究材料の持ち運び問題 動的計画法を用いたナップサック問題の解法について解説する。`dp`配列を定義し、`dp[i][j]`はi個の物品をjの容量で運ぶ際の最大価値を表す。漸化式は以下の2つのケースに分けられる: 1. 物品を入れられる場合:`dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i])` 2. 物品を入れられない場合:`dp[i][j] = dp[i-1][j]` 初期化処 ...

7月8日 20:21 投稿

ABC352コンテスト問題解説

問題A: 停車可能区間の判定 ある区間内に指定された位置が含まれるかを判定する問題です。xとyの大小関係によって、区間の方向が変わる点に注意が必要です。 コード例 #include <iostream> #include <algorithm> int main() { int n, x, y, z; std::cin >> n >> x >> y >> z; bool result = false; if (x ...

7月7日 21:07 投稿