東華大学復試OJ每日3題練習・第103〜105題の振り返り

基本問題103:入力された文字列から数字を読み取り、'5'をスペースとして扱い、その結果を昇順に並び替えて出力する。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int count; scanf("%d", &count); getchar(); while(count--) { char line[1000]; fgets(line, sizeof(l ...

5月21日 19:11 投稿

LeetCode 49題 - 文字列のアナグラムグループ化(Java実装)

文字列49 49. 文字列のアナグラムグループ化 問題記述 文字列の配列が与えられるので、アナグラムを同じグループにまとめなさい。結果のリストは任意の順序で返して構いません。 アナグラムとは、元の単語のすべての文字を並び替えて作られる新しい単語のことです。 例1: 入力: strs = ["eat", "tea", "tan", "ate", "nat&qu ...

5月21日 04:03 投稿

プレフィックス和と差分アルゴリズムの理解とC++実装

プレフィックス和アルゴリズム 基本概念 プレフィックス和は配列処理技術の一種で、事前計算により部分区間の和をO(1)で取得可能にします。入力配列をdataとすると、プレフィックス配列prefは次のように定義されます: pref[i] = data[0] + data[1] + ... + data[i] pref[0] = data[0] 構築方法 C++による実装例: vector<int> constructPrefixArray(const vector& ...

5月21日 01:20 投稿

スタックとキューを用いたプログラミング課題解説

1. 多項式微分計算 係数と指数のペアを読み込み、微分計算を行い結果を出力する。 入力例: 3 4 -5 2 6 1 -2 0 出力例: 12 3 -10 1 6 0 実装例: #include <iostream> using namespace std; int main() { int coeff, exp; bool first = true; while(cin >> coeff >> exp) { if(exp != 0) { if(!first) cout top)] = ch; } } ...

5月20日 22:32 投稿

リンクリスト操作の実践:ノード交換、削除、交点検出、循環検出

リンクリストのノード交換 反復解法 ListNode* swapPairs(ListNode* head) { if(!head || !head->next) return head; ListNode dummy(0); dummy.next = head; ListNode* prev = &dummy; ListNode* curr = head; while(curr && curr->next) { ListNode* nextNode = curr->next; // ノード交換 prev->n ...

5月20日 14:29 投稿

二叉树における探索・判定・再帰的構築のアルゴリズム実装

最下段の左端ノード値の取得 指定された二叉樹に対して、最下層に位置する左端のノードが保持する数値を特定します。幅優先探索(BFS)を用いて木を階層ごとに処理し、各レベルの走査開始時に最初に訪問するノードを記録します。探索が完全に終了した時点で最後に記録された値が、要件を満たす最下段左端ノードの値となります。このアプローチにより、キューの順序を意図的 ...

5月20日 04:52 投稿

アルゴリズム競技プログラミング問題集

基本的なアルゴリズム問題集 1. 立方体の体積計算 辺の長さa, b, cが与えられた時、立方体の体積を計算します。 #include <iostream> using namespace std; int main() { int length, width, height; cin >> length >> width >> height; cout > exponent; cout countB; for(int i=0; i<countA+countB; i++) { cout > n; whil ...

5月20日 03:45 投稿

素因子が3、5、7のみであるk番目の数を求めるアルゴリズム

問題の理解 素因子が3、5、7のみである数列のk番目の数を求めるアルゴリズムを設計する必要があります。この数列の最初のいくつかの数は1, 3, 5, 7, 9, 15, 21, 25, 27, 35...となります。 この問題を理解するために、まず条件を明確にしましょう。対象となる数は、素因数分解したときに素因子として3、5、7しか持たない数です。例えば: 1:素因子を持たない(特別ケー ...

5月20日 03:26 投稿

アルゴリズム問題 - バックトラッキング手法

1.バックトラッキングの理論的基礎 1.1バックトラッキングとは何か バックトラッキングは探索アルゴリズムの一種であり、再帰処理に基づいて動作します。 再帰呼び出しの結果としてバックトラッキングが発生するため、再帰があれば必ずバックトラッキングも存在します。 1.2バックトラッキングの性能 バックトラッキングは計算効率が悪いという特徴があります。これは、す ...

5月20日 01:32 投稿

C++による基本ソートアルゴリズムの実装ガイド

バブルソート 時間計算量はO(n²)で、追加のメモリ領域を必要としないインプレースソートである。 アルゴリズムの仕組み 隣接する2つの要素を順次比較し、大小関係が逆であれば交換を行う。先頭から末尾まで走査すると、最大値が配列の最後尾に移動する。次に、末尾を除いた範囲で同様の操作を繰り返すことで、未整列部分の最大値が順に後方へ沈んでいく。 実装例 #include ...

5月20日 00:45 投稿