C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】2つのリストに共通する要素が存在するかどうかを確認するプログラム

C#では、2つの配列やリストに共通する要素が存在するかどうかを、HashSetと比較演算子(== や <)を組み合わせて効率的に確認できます。この記事では、具体的な実装方法をサンプルコード付きで解説します。

最初のリストの設定

まず、比較対象となる最初のリスト(整数型の配列)を設定します。

int[] arr1 = {
    65,
    57,
    63,
    98
};

2つ目のリストの設定

続いて、2つ目のリストを設定します。

int[] arr2 = {
    43,
    65,
    33,
    57
};

サンプルコード

以下は、== 演算子と < 演算子を使って2つのリストの共通要素を検出する完全なコード例です。各配列をいったんHashSetに変換し、2つのインデックスを先頭から進めながら要素を比較することで、共通する値を効率よく見つけ出します。

using System;
using System.Collections.Generic;
using System.Linq;

public class Program {
    public static void Main() {
        int[] arr1 = {
            65,
            57,
            63,
            98
        };

        int[] arr2 = {
            43,
            65,
            33,
            57
        };

        // HashSet その1
        var h1 = new HashSet<int>(arr1);
        // HashSet その2
        var h2 = new HashSet<int>(arr2);

        // 表示
        int[] val1 = h1.ToArray();
        Console.WriteLine("Set one...");
        foreach(int val in val1) {
            Console.WriteLine(val);
        }

        // 表示
        int[] val2 = h2.ToArray();
        Console.WriteLine("Set two...");
        foreach(int val in val2) {
            Console.WriteLine(val);
        }

        int i = 0, j = 0;
        Console.WriteLine("Common elements:");
        while (i < val1.Length && j < val2.Length) {
            if (val1[i] == val2[j]) {
                Console.Write(val1[i] + " ");
                i++;
                j++;
            } else if (val1[i] < val2[j])
            i++;
            else
            j++;
        }
    }
}

実行結果

Set one...
65
57
63
98
Set two...
43
65
33
57
Common elements:
65 57

コードのポイント

このプログラムでは、まず2つの配列をそれぞれHashSetに変換し、重複のない要素集合を作成しています。その後、両方のセットを配列として取り出し、インデックス i と j を使って要素を順に比較します。値が等しければ共通要素として出力し、どちらかの値が小さければその側のインデックスを1つ進める、というシンプルな二重ポインタ方式のアルゴリズムです。

なお、この手法はデータが昇順にソートされていることを前提としたものです。確実にすべての共通要素を検出したい場合は、比較前に Array.Sort() などで両方の配列をソートしておくことをおすすめします。

  1. Pythonで2つのリストに共通要素が存在するかを判定する方法【初心者向け解説】

    この記事では、ユーザーから入力された2つのリストを受け取り、それらの間に共通する要素が少なくとも1つ存在するかどうかを判定するPythonプログラムを紹介します。判定には、最もシンプルな「走査(トラバーサル)」という手法を使用します。具体的には、1つ目のリストと2つ目のリストを順番にたどりながら、各要素同士を比較していきます。 実行例 入力 : A = [10, 20, 30, 50] B = [90, 80, 30, 10, 3] 出力 : FOUND(共通要素あり) 入力 : A = [10, 20, 30, 50] B = [100, 200, 300,

  2. Pythonで2つのリストの共通要素をすべて出力する方法

    2つのリストが与えられたとき、両方のリストに共通して含まれるすべての要素を出力するPythonプログラムを紹介します。この問題は、セット(set)型の集合演算を使うことで、シンプルかつ効率的に解決できます。 実行例 入力 : L1 = [5, 6, 7, 8, 9] L2 = [5, 13, 34, 22, 90] 出力 : {5} 説明 上記の例では、2つのリストのどちらにも存在する要素は「5」だけなので、出力は {5} となります。 アルゴリズム 処理の手順は以下のとおりです。 ステップ1 : ユーザーから入力を受け取り、2つのリストを作成する。 ステップ2 : 各リ