[Easy] 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.

 

주어진 nums 배열 요소 중 중복되는 값이 있다면 true, 없으면 false를 반환하라.

 

예시

Example 1:

Input: nums = [1,2,3,1]
Output: true

Example 2:

Input: nums = [1,2,3,4]
Output: false

Example 3:

Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true

 

제약 조건

Constraints:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

 

해결 과정

1차적으로 문제에 맞게 직관적으로 해결을 해보았다. 하지만 이 방법은 시간복잡도가 N^2으로, 많은 시간이 소모된다.

2차로 Set를 활용하여 문제를 해결해보았다. 코드도 훨씬 단순해지고 시간 복잡도도 크게 개선되었다.

 

해결 코드

1차

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    let array = [];
    
    for(let el of nums){
        if(array.indexOf(el) === -1){
            array.push(el);
        }else{
            return true;
        } 
    }
    return false;
};

 

2차

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    let newSet = new Set(nums);
    if(newSet.size !== nums.length) return true;
    else return false;
};

'leetCode > NeetCode' 카테고리의 다른 글

[Easy] 242. Valid Anagram  (0) 2022.08.02