0Pricing
Coding Interview Prep · レッスン

所属判定と重複排除のための集合

定数時間で存在を判定します

「所属判定と重複排除のための集合」はCoddyKit上の無料Coding Interview Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCoding Interview Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Coding Interview Prepコースには全4レッスンが含まれています。

set の利点

set は順序を持たない一意な要素を保存します。本当の力は、「これが存在するか」をほぼ定数時間で答えられることです。⚡

list ではいけない理由

list でメンバーシップを確認すると、すべての要素を調べるため O(n) かかります。一方、set は値をハッシュ化し、対応するバケットへ直接移動します。

set を作る

波括弧または set() の呼び出しで作成できます。空の set には set() を使う必要があります。空の波括弧は辞書になるためです。

seen = set()
vowels = {'a', 'e', 'i', 'o', 'u'}

メンバーシップテスト

in キーワードを使って、値が存在するか確認します。set ではこれが高速な検索になるため、このデータ構造を使う価値があります。

if x in seen:
    print('already saw it')

要素を追加する

add を使って値を追加します。同じ値を繰り返し追加しても何も変わらないため、set がすべての要素を自動的に一意に保ってくれます。

seen.add(x)

即座に重複を除去する

任意のイテラブルを set() に渡せば、一回の走査で重複がなくなります。競技プログラミングの入力から重複を除去する最短の方法です。

unique = set(nums)

異なる値を高速に数える

よくある課題に「異なる値はいくつあるか」があります。データを set に変換し、その長さを一行で取得してください。

distinct_count = len(set(nums))

見た値を記録する

ループ中に set を構築して、最初の重複を見つけます。ある値がすでに set に入っていれば、その場で重複が見つかったことになります。

for v in nums:
    if v in seen:
        return True
    seen.add(v)

集合演算をそのまま使う

set は、共通部分、和集合、差集合を直接扱えます。二つのグループの比較を、入れ子のループではなく一つの演算子で実行できます。

common = a & b
only_a = a - b

削除と破棄

値が存在しない場合でも安全に削除するには discard を使います。一方、存在しないキーに対して remove を使うとエラーになります。意図に合う方を選んでください。

seen.discard(x)

ハッシュ可能な要素のみ

set には ハッシュ可能 な要素が必要なため、リストは入れられませんが、タプルは入れられます。保存する必要がある場合は、まずリストをタプルに変換してください。

grid_seen = set()
grid_seen.add((row, col))

クイックチェック

リストに異なる数値がいくつ含まれているかを知りたいとします。

まとめ

set を使うと、要素の存在確認を O(1) で行え、重複除去や共通部分・差分の取得も簡単です。「これを見たことがあるか」と考えたら、set を使ってください。🚀

よくある質問

「所属判定と重複排除のための集合」レッスンは無料ですか?

はい。「所属判定と重複排除のための集合」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Coding Interview Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Coding Interview Prepコースには全4レッスンが含まれています。

「所属判定と重複排除のための集合」で何を学びますか?

定数時間で存在を判定します ブラウザで直接実行するハンズオンコードでCoding Interview Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Coding Interview Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCoding Interview Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「所属判定と重複排除のための集合」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCoding Interview Prepレッスンでコードを書いて実行できますか?

はい。すべてのCoding Interview Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 所属判定と重複排除のための集合
  2. ルックアップテーブルとしての辞書
  3. Counter と defaultdict の実践
  4. Map でグループ化とバケット分け
← Coding Interview Prepに戻る