C#で配列内の重複を検出する方法:Dictionaryを使った効率的なプログラム
C#では、Dictionaryを活用することで、配列内に重複した要素が含まれているかどうかを効率的に確認できます。各要素の出現回数を記録し、2回以上登場する要素があれば重複が存在すると判断します。ここでは、その具体的な実装手順を解説します。
手順1:配列の設定
まず、確認対象となる配列を用意します。
int[] arr = {
89,
12,
56,
89,
};
手順2:Dictionaryの作成
次に、要素の出現回数を記録するための新しいDictionaryを作成します。キーには配列の要素を、値にはその出現回数を格納します。
var d = new Dictionary <int, int>();
手順3:ContainsKey()メソッドで重複を検出
DictionaryのContainsKey()メソッドを使用し、配列の各要素がすでに登録されているかどうかを判定します。登録済みの場合はカウントを1つ増やし、未登録の場合は1として新規に追加します。
foreach(var res in arr) {
if (d.ContainsKey(res))
d[res]++;
else
d[res] = 1;
}
完全なコード例
以下に、これまでの手順をまとめた完全なコードを示します。
using System;
using System.Collections.Generic;
namespace Demo {
public class Program {
public static void Main(string[] args) {
int[] arr = {
89,
12,
56,
89,
};
var d = new Dictionary < int, int > ();
foreach(var res in arr) {
if (d.ContainsKey(res))
d[res]++;
else
d[res] = 1;
}
foreach(var val in d)
Console.WriteLine("{0} occurred {1} times", val.Key, val.Value);
}
}
}
実行結果
89 occurred 2 times 12 occurred 1 times 56 occurred 1 times
実行結果のポイント
この実行結果から、89が2回出現していることがわかり、配列に重複が含まれていることが確認できました。なお、この手法の計算量はO(n)であり、すべての要素を二重ループで総当たり的に比較する方法(O(n²))と比べて大幅に高速です。そのため、大量のデータを扱う場合にも効率的に動作します。
-
Pythonで配列の合計を求める方法を徹底解説
この記事では、Pythonを使って配列(リスト)の合計を求める方法について詳しく解説します。 問題文 問題: 配列が与えられたとき、その配列に含まれるすべての要素の合計を計算してください。 最も基本的なアプローチは、配列全体を走査し、各インデックスの要素を順番に加算していく方法です。ここでは、まず組み込み関数を活用したシンプルな実装例を見ていきましょう。 方法1:組み込み関数 sum() を使う Pythonには、イテラブルなオブジェクトの合計を一発で計算できる組み込み関数 sum() が用意されています。これを使えば、コードは非常に簡潔になります。 サンプルコード # 合計を求める関数 de
-
Pythonで配列(リスト)の合計を求める方法をわかりやすく解説
この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に