C言語によるヒープと二分木の実装
ヒープデータ構造の実装
ヘッダファイル定義
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
typedef int HeapValue;
typedef struct MinHeap {
HeapValue* elements;
int count;
int capacity;
} MinHeap;
void HeapInitialize(MinHeap* heap);
void HeapDestroy(MinHeap* heap) ...
7月23日 19:21 投稿
循環リンクリストの検出と入環ノード特定
循環リンクリストの検出
問題概要
リンクリストの先頭ノードheadが与えられたとき、循環構造の有無を判定する。循環構造とは、ノードのnextポインタを追跡することで再訪問可能なノードが存在する状態を指す。循環が存在しない場合はfalseを返す。
入力例
例1: head = [3,2,0,-4], pos=1 → true
例2: head = [1,2], pos=0 → true
例3: head = [1], pos=-1 → false
解法: ...
7月22日 22:34 投稿
2024年蓝桥杯コンテスト対策:重要知識と試験テクニック
過去問
2023年第十四回蓝桥杯C++B組の振り返り
2022年
2021年
蓝桥杯公式サイトの問題演習
⭐試験テクニック⭐
まず暴力解法(時間計算量の高い解法)を考えます → 部分点を獲得
データ範囲から正しい時間計算量を判断し、その計算量に基づいてアルゴリズムの範囲を特定します。
暴力解法:問題文のプロセスをシミュレーションします。
時間計算量:https://www.acwin ...
7月22日 18:52 投稿
HashMapソースコード解析ノート
内部構造:配列+連結リスト+赤黒木
主要なポイント
ハッシュ関数の攪乱処理
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
このメソッドは、keyのハッシュ値に対して攪乱処理を行う。上位16ビットはそのまま保持し、下位16ビットと上位16ビットの排他的論理和(XOR)を計算し、その ...
7月22日 03:52 投稿
R言語におけるリストの基本概念
はじめに
リストはインデックス付きのオブジェクト群であり、異なるデータ型を含むことができる。その強みと有用性は汎用性にあります。Rでは、複雑な関数の出力を収集・保存するためによく使われます。データフレームはリストの特殊な形です。
リストはlist(...)関数を使って作成され、カンマで区切られた引数を受け取ります。サブリストを選択するには単一角括弧を使用し ...
7月22日 03:43 投稿
線形リストの初期化と破棄処理の実装
線形リストの主要機能
1. データ格納とアクセス
線形リストはデータを順序通りに格納し、効率的な組織化と管理を可能にします。インデックスを使用することでデータ要素への高速アクセスが実現されます。
2. データ挿入と削除
任意の位置へのデータ要素の挿入・削除操作をサポートします。これによりデータの更新や修正が容易になります。
3. データ検索
インデックス ...
7月21日 02:07 投稿
SMU Summer 2024 Contest Round 5
SMU Summer 2024 Contest Round 5
ロボット高橋君
思考プロセス
重み (W_i) でソートし、前後の 1 と 0 の個数を計算します。答えはおおよそ (\max(ans,pre_i+suf_{i+1})) の形式になります。
ソート後、(W_i = W_{i+1}) の場合、i と i+1 の間で分割できないため特別な処理が必要です。
コード
#include <iostream>
#include <vector>
#include <algorithm ...
7月20日 17:48 投稿
アルゴリズムのインデックス解析:データ構造から問題解決まで
アルゴリズムのインデックス解析:データ構造から問題解決まで
アルゴリズムの学びは、知識の蓄積と問題解決能力の向上を目的とした技術的な探求です。この記事では、アルゴリズム関連の知識体系を整理し、学びの方向性を示します。
1. 多様なAPIの役割
APIはアルゴリズムの実装において重要な役割を担います。効率的なプログラミングを可能にするため、さまざまな機能 ...
7月19日 20:28 投稿
動的計画法の応用とコード実装
動的計画法の基本概念
動的計画法(Dynamic Programming、以下DP)は、問題を小さなサブ問題に分解し、その解を記憶して再利用することで効率的に解決するアルゴリズム手法です。この方法は、重複計算を回避し、時間効率を大幅に向上させます。
dp[k]:サブ問題の解を保持する配列
初期条件の設定
状態遷移方程式の導出
メモリ節約のためのローリング変数や配列の活用
...
7月19日 03:18 投稿
汎用連結リストの実装
汎用連結リストの実装
汎用連結リストの設計思想は、ノード構造体を定義し、その中に前のノードと次のノードを指すポインタを含むことです。その後、具体的な要件に応じて、ノード構造体内に他のデータ構造をネストすることで、異なる種類の連結リストを実現します。
構造体メンバの先頭アドレス計算
// 構造体メンバmemberが構造体内の最初のメンバアドレスからのオフ ...
7月18日 00:49 投稿