所属判定と重複排除のための集合
定数時間で存在を判定します
「所属判定と重複排除のための集合」は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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 所属判定と重複排除のための集合
- ルックアップテーブルとしての辞書
- Counter と defaultdict の実践
- Map でグループ化とバケット分け