간단한다. 입력한 배열에 중복 값이 있으면 true, 없으면 false를 반환.
ES6의 Set 타입을 사용했다. Set은 중복을 허용하지 않기 때문에 중복 값이 있다면 입력된 nums 배열의 크기와 다를 것이라고 생각했다.
const containsDuplicate = function (nums) {
const set = new Set(nums);
return set.size === nums.length ? false : true;
};
이렇게도 풀어봤다. (foreEach 문에서는 return이 적용 안됨...)
시간복잡도 O(n) ??
const containsDuplicate = function (nums) {
const set = new Set();
for (num of nums) {
if (set.has(num)) {
return true;
}
set.add(num);
}
return false;
};
정렬을 이용한 풀이 방법이다. 오름차순으로 정렬 후 현재 값과 이전 값이 같은지 확인했다.
시간복잡도 O(nlogn)
const containsDuplicate = function (nums) {
nums.sort((a, b) => a - b);
for (let i = 1; i < nums.length; i++) {
if (nums[i - 1] === nums[i]) return true;
}
return false;
};