連結リストの基本操作:要素削除、カスタム設計、反転処理
連結リストの要素削除
例:入力: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 投稿