C#で解くLeetCode「349. Intersection of Two Arrays」

概要

エンジニア職での就職・転職では会社によってはコーディングテストというものがあります。
新卒でも中途でも入社したい会社というのは誰でもいい環境を求めるのではないでしょうか。
そこで、コーディングテストで振り落とされないためにもLeetCodeというテスト対策ができるサイトでアルゴリズム力を鍛えたいと思います。

問題

349. Intersection of Two Arrays

2つの整数配列nums1、nums2が与えられたとき、それらの交点を配列で返す。結果の各要素は一意でなければならず、どのような順序で結果を返してもよい。

制約

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

解説

与えられた配列から重複を削除して、戻り値用のハッシュセットを用意する

MethodName
// 渡された配列から重複を削除する
var numbers1 = new HashSet<int>(nums1);
var numbers2 = new HashSet<int>(nums2);
            
// 戻り値用のハッシュセットを用意する
var result = new HashSet<int>();

number2の一意な値を一つずつ確認し、number1に含まれているかを確認する。
含まれている場合、num1num2 の重複した値となるので戻り値用のハッシュセットに追加する。
戻り値は配列なので.ToArray()を実行して返し終了する。

MethodName
// number2の値をひとつずつ確認しnumbers1に含まれていた場合戻り値とする
foreach (var number in numbers2)
{
    if (numbers1.Contains(number))
    {
        result.Add(number);
    }
}

// 配列にして返す
return result.ToArray();

ソースコード

Solution.cs
public class Solution {
    public int[] Intersection(int[] nums1, int[] nums2) {
        // 渡された配列から重複を削除する
        var numbers1 = new HashSet<int>(nums1);
        var numbers2 = new HashSet<int>(nums2);
            
        // 戻り値用のハッシュセットを用意する
        var result = new HashSet<int>();

        // number2の値をひとつづつ確認しnumbers1に含まれていた場合戻り値とする
        foreach (var number in numbers2)
        {
            if (numbers1.Contains(number))
            {
                result.Add(number);
            }
        }

        // 配列にして返す
        return result.ToArray();
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です