[leetcode]問題解答と解説。219. Contains Duplicate II [JavaScript]
皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
leetCodeの使い方や解説ではなく実際に問題を解決するために何をしたか
をメモ書きして行きます
私はある決意をして今臨んでいます。
モチベーションを保つためだけにこれをやっています。
では今日のleetCode。
「219. Contains Duplicate II」の解決策と方法。自分がまず挑戦して
やったことをさらけ出します。
※下にある自分のコードは自分で設けた制限時間内に書けたところまです。
これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。
219. Contains Duplicate II ルール
ざっくり和訳
219. Contains Duplicate II 問題ページ
219. Contains Duplicate II
my code is time over.
function containsNearbyDuplicate(nums: number[], k: number): boolean {
let obj = {}
for (let index = 0; index < nums.length; index++) {
if(!!obj[nums[index]] !== undefined){
if(Math.abs(obj[nums[index]] - index) <= k){
return true
}
}
obj[nums[index]] = index
}
return false;
};
これは一発合格
219. Contains Duplicate II。discussの中の一つの解答例
数ある中からJavaScriptのもので、理解しやすい解説をピックアップしました。
discussから見ればさらにもっと違う方法で真似したくなるものがあるかもしれないですね
JavaScriptでfilterされている、discussはこちらから
個人的には、これが良かった
1
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var containsNearbyDuplicate = function(nums, k) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
if (i - map.get(nums[i]) <= k) {
return true;
}
map.set(nums[i], i);
}
return false;
};
大きくは
- objectではなくMapを使っているところ
- Math.absを使わないところが違う
219. Contains Duplicate IIをやってみて感想
objectを使うと往々にして遅くなるようなのでMapを使って行きたい