React

217. Contains Duplicate

Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
Example 1:
Input: nums = [1,2,3,1] Output: true
Plain Text
복사
Example 2:
Input: nums = [1,2,3,4] Output: false
Plain Text
복사
Example 3:
Input: nums = [1,1,1,3,3,4,3,2,4,2] Output: true
Plain Text
복사
Constraints:

My solution

정수 배열 nums가 있다.
만약 어떤 값이 이 배열의 안에 적어도 2번 이상 나타난다면 true를 반환해라.
그리고 모든 값이 다르면 false를 반환해라.
배열의 값을 Set에 넣으면 알아서 중복제거가 된다.

Sets

Set object

Set객체는 값들의 집합이다. 입력된 순서에따라 저장된 요소를 반복처리할 수 있다. Set은 중복된 값을 허용하지 않는다. 따라서 특정 값은 Set내에서 하나만 존재 하게 된다.
아래의 코드는 Set의 기본적인 동작들을 보여 준다. 더 많은 예제와 모든 API는 Set 참조 페이지를 보면 된다.
var mySet = new Set(); mySet.add(1); mySet.add("some text"); mySet.add("foo"); mySet.has(1); // true mySet.delete("foo"); mySet.size; // 2 for (let item of mySet) console.log(item); // 1 // "some text"
JavaScript
복사
일반적으로 Javascript에선 배열에 특정 요소의 집합을 저장한다. 하지만 Set객체는 몇가지 이점을 제공한다.
indexOf메서드를 사용하여 배열내에 특정 요소가 존재하는지 확인하는 것은 느리다.
배열에선 해당 요소를 배열에서 잘라내야 하는 반면 Set객체는 요소의 값으로 해당 요소를 삭제하는 기능 제공한다.
NaN은 배열에서 indexOf메서드로 찾을 수 없다.
Set객체는 값의 유일성을 보장하기 때문에 직접 요소의 중복성을 확인할 필요가 없다.
Set 인스턴스를 만들고
for문(성능은 빠르다.)으로 배열의 요소 하나하나를 set에 넣는다.
넣기 전에 set.has()로 존재하는지 확인하는 과정이 있고 이때 존재하면 true를 반환한다.
for문이 다 돌고 나면 false를 반환하여 함수를 종료한다.

Code

/** * @param {number[]} nums * @return {boolean} */ const containsDuplicate = function (nums) { const set = new Set(); for (let i = 0; i < nums.length; i++) { if (set.has(nums[i])) return true; set.add(nums[i]); } return false; }; describe('Contains Duplicate', () => { it('TC1', () => { expect(containsDuplicate([1, 2, 3, 1])).toStrictEqual(true); }); it('TC2', () => { expect(containsDuplicate([1, 2, 3, 4])).toStrictEqual(false); }); it('TC3', () => { expect(containsDuplicate([1, 1, 1, 3, 3, 4, 3, 2, 4, 2])).toStrictEqual( true ); }); });
JavaScript
복사