Zenn
Open4

NeetCode を解くスレ

Hidden comment
kenken

Contains Duplicate:03/26

  1. Brute Force
    ネストした for 文を回して全件チェックする愚直な方針。計算量が O(n2) になって遅い。
    メモリ使用は O(1) なので問題なしだが。
  2. Sorting
    並び替えを行う。[1,2,3,1] を [1,1,2,3] と数字の昇順に並べ、最初の2ペアだけをチェックする。計算量は O(n log n) で Brute Force より良い。メモリ使用は O(1)。
  3. Hash set
    配列を for 文で回して hash set につっこんでいく。すでに hash set に値が存在する場合は return を返す。計算量は O(n) で良い。メモリ使用は Hash Set の O(n)。これが最適解。
answer.ts
function containsDuplicate(nums: number[]): boolean {
    const seen = new Set();
    for (const num of nums) {
        if (seen.has(num)) {
            return true;
        }
        seen.add(num);
    }
    return false;
};
kenken

Valid Anagram:03/30

解答案

  1. s, t をそれぞれ一旦 Array.from で配列にして sort する。そして sort した配列を文字列に戻して比較。これは brute force。計算量は O(nlogn + mlogm)。
kenken

一旦、「問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本」を読み直し中。

作成者以外のコメントは許可されていません