문제링크
문제정보
정수로 이루어진 배열 nums가 매개변수로 주어집니다.
nums에는 1부터 nums.length만큼의 범위의 숫자들이 모두 들어가있었어야 했습니다.
nums의 요소 중 빠져있는 숫자들을 모은 배열을 return 하시오.
대충 이런 문제입니다.
example
Input: nums = [4,3,2,7,8,2,3,1]
Output: [5,6]
이런식으로 답이 return 되어야 하는 문제인데
저는 indexOf를 이용해서 서칭하는 방법을 사용해봤어요
var findDisappearedNumbers = function(nums) {
let answer = [];
for(i = 1; i <= nums.length; i++) {
if(nums.indexOf(i) == -1) {
answer.push(i);
}
}
return answer
};
어차피 배열은 정수로 이루어져있고 순서대로 찾아나가는데 없는 숫자를 넣어주는거니까
indexOf를 이용해서 만약 반환값이 -1이라면 그 숫자가 없는것이니
answer 배열에 i를 push해줬습니다.
근데 이렇게 답을 찾으면 시간제한에 아슬아슬하게 통과하는 코드가 되어버립니다.
그래서 더 효율적인 코드가 있지 않을까하고 다른사람들의 풀이를 찾아보는데
이해하기 쉬우면서 제 코드보다 효율이 좋은 코드를 찾아 공유드립니다.
다른사람의 풀이
const findDisappearedNumbers = nums => {
const set = new Set(nums);
const newArr = [];
for (let i = 1; i <= nums.length; i++) {
if(!set.has(i)){
newArr.push(i);
}
}
return newArr;
};
nums로 이루어진 set 객체를 선언해줍니다.
set 객체는 동일한 값을 중복해 포함하지 않기 때문에 중복값들을 모두 삭제해줄 수 있죠!
.has()는 set 객체 안에 value가 존재하는지 여부를 판별하고 값이 존재하는지에 따라 true 혹은 false를 반환하는 함수입니다.
has를 이용한 탐색이 훨씬 효율이 좋네요
반응형
'leetcode' 카테고리의 다른 글
77. Combinations javascript leetcode (0) | 2022.11.19 |
---|---|
46. Permutation (0) | 2022.11.18 |
39. Combination Sum javascript leetcode (0) | 2022.11.16 |
1365. How Many Numbers Are Smaller Than the Current Number javascript leetcode (0) | 2022.11.15 |
7. Reverse Integer Javascript Leetcode (0) | 2022.11.14 |