easy LC #349

PROBLEM 03

2つの配列に共通する値

2つの配列に現れる値を、重複なしで返します。

目安 30分 set · membership

2つの参加者リストを数値IDで受け取ります。 両方のリストに登場するIDだけを、重複を取り除いて返してください。 返す順番は問いません。

入力: left = [2, 2, 4, 8], right = [1, 2, 2, 8]
出力: [2, 8]
理由: 両方に現れるのは 2 と 8。left に 2 が2回あっても、出力には1回だけ
入力: left = [1, 3, 5], right = [2, 4, 6]
出力: []

制約

  • 各配列の長さは 0 以上 50,000 以下
  • 要素は安全な整数
  • 出力に同じ値を2回含めない
  • 目標: O(n + m) 相当(includes の繰り返しは性能テストで時間切れになります)

対応する問題: LeetCode #349 Intersection of Two Arrays

STEPWISE HINTS

ヒント

01最初の一手

片方の配列に値が含まれるかを、もう片方から何度も調べる処理を高速化します。

02処理の組み立て

Set を使うと、値の存在確認と重複の除去を同時に扱えます。

03コードの形

right を Set にする。left の各値を調べ、right に存在する値を結果用 Set に追加して、最後に配列へ変換する。

AFTER ACCEPTED

解説

AC 後に解説が開きます

まずは自分の言葉で方針を説明し、コードに落としてみましょう。