https://leetcode.com/explore/learn/card/hash-table/184/comparison-with-other-data-structures/1121/
์ฒ์์๋ for๋ฌธ์ ๋๋ฉด์ nums์ i๋ฒ์งธ ์ธ๋ฑ์ค ์ดํ์ nums์ nums[i]๊ฐ ์๋์ง ํ์ธํ๊ณ ์๋ค๋ฉด ๋ค์ for๋ฌธ์ ๋๋ฉด์ j-i๊ฐ k๋ณด๋ค ์์๊ฒ ์์ผ๋ฉด return trueํด์ฃผ๋ ค๊ณ ํ๋ค.
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var containsNearbyDuplicate = function(nums, k) {
let len = nums.length;
for(let i = 0; i<len; i++){
let num = nums[i];
if(nums.includes(num, i+1){
for(let j = i+1; j<len; j++){
if(nums[j] === num && j-i <=k) return true;
}
}
}
return false;
};
javascript๋ [ํค,๊ฐ]์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง Map๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
Map์ ์ด์ฉํด ํด๊ฒฐํ๋ค
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var containsNearbyDuplicate = function(nums, k) {
let numMap = new Map();
let len = nums.length;
for(let i = 0; i<len; i++){
if(numMap.has(nums[i])){
if(Math.abs(numMap.get(nums[i]) - i) <= k) return true;
}
numMap.set(nums[i], i);
}
return false;
};
numMap์ด๋ผ๋ ์๋ก์ด Map๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ nums๋ฅผ ์ํํ๋ฉด์ numMap์ ํด๋น ์์๊ฐ ์๋์ง ํ์ธํ๋ค.
์์๊ฒฝ์ฐ ์ค๋ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ ํ์ธ์ ์ฐจ๋ฅผ ๊ฑฐ์น๋ค
numMap์ ํค๊ฐ์ nums์ ๊ฐ์ด ๋๊ณ , numMap์ ๊ฐ์ nums์ ์ธ๋ฑ์ค๊ฐ ๋๋ค => numMap.set(nums[i], i);
๋ฐ๋ผ์ ์ธ๋ฑ์ค๊ฐ์ ๋น๊ตํด ์ ๋๊ฐ์ด k๋ณด๋ค ์์ผ๋ฉด true๋ฅผ ๋ฆฌํดํ๊ณ , ์๋๋ผ๋ฉด ๋ค์ numMap์ ๊ฐ์ ์์ ํ๊ฒ ๋๋ค.
์๋ฅผ๋ค์ด nums = [1,2,3,1,1,1]์ด๊ณ , k๊ฐ 1์ด๋ผ๊ณ ํ๋ฉด i๊ฐ 2์ผ๋๊น์ง๋ numMap = [1:0, 2:1, 3:2]์ด๋ค.
i๊ฐ 3์ด ๋๋ฉด numMap์๋ 1์ด ์ด๋ฏธ ์๊ธฐ ๋๋ฌธ์ if๋ฌธ์ ๊ฑฐ์น๋ค
numMap.get(nums[i]) ๋ 0์ด๊ณ , i๋3์ด๋ผ 0-3์ ์ ๋๊ฐ์ 3์ด๋ผ k๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ง ์๋ค.
๋ฐ๋ผ์ numMap.set์ผ๋ก ์ธํด numMap = [1:3, 2:1,3:2]๊ฐ ๋๋ค
์ด์ i๊ฐ 4๊ฐ ๋๋ฉด numMap์๋ ์ญ์ 1์ด ์๊ธฐ ๋๋ฌธ์ if๋ฌธ์ ๊ฑฐ์น๋ค
numMap.get(nums[i]) ๋ 3์ด๊ณ i๋ 4๋ผ์ 3-4์ ์ ๋๊ฐ์ 1์ด๋ผ k์ ๊ฐ๊ธฐ ๋๋ฌธ์ true๋ฅผ ๋ฆฌํดํ๋ค