문제
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 |
---|
Comment