Open4
NeetCode を解くスレ

Contains Duplicate:03/26
- Brute Force
ネストした for 文を回して全件チェックする愚直な方針。計算量が O(n2) になって遅い。
メモリ使用は O(1) なので問題なしだが。 - Sorting
並び替えを行う。[1,2,3,1] を [1,1,2,3] と数字の昇順に並べ、最初の2ペアだけをチェックする。計算量は O(n log n) で Brute Force より良い。メモリ使用は O(1)。 - 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;
};

Valid Anagram:03/30
解答案
- s, t をそれぞれ一旦 Array.from で配列にして sort する。そして sort した配列を文字列に戻して比較。これは brute force。計算量は O(nlogn + mlogm)。

一旦、「問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本」を読み直し中。
作成者以外のコメントは許可されていません