⚡문제정보
주어지는 입력에서 대부분의 요소들은 단 2번 등장하지만
드물게 한번만 등장하는 요소들이 있다고 합니다.
이 한번만 등장하는 요소들을 찾아서 배열로 만들어 반환하는 것이 조건입니다.
보통 2번만 등장하니까 객체형태로 카운팅을 해주면서 카운팅한 값이 2가 되는 순간 딜리트해주면되겠네요
🔍접근방법
1. map 자료구조를 생성하고 주어진 배열을 순회한다.
2. 배열을 순회하며 등장횟수를 카운팅한다.
3. 등장횟수가 2가 된 경우 map에서 자료를 지워버린다.
4. 남은 값의 key만 반환하면 끝
😑나의 풀이
var singleNumber = function(nums) {
const map = new Map()
for(let i = 0 ; i < nums.length; i++) {
map.set(nums[i] , (map.get(nums[i])??0)+1 )
if(map.get(nums[i])>1) map.delete(nums[i])
}
return [...map.keys()]
};
간단하게 순회하면서 구현하면 끝입니다.
😑다른 사람의 풀이
var singleNumber = function(nums) {
if(nums.length === 2){
return nums
}
const res = new Array(2).fill(0)
let xor1 = 0
for(let i=0; i<nums.length; i++){
xor1 ^=nums[i]
}
const lowestBit = xor1 & (-xor1) // to find leftmost set bit
for(let i=0; i<nums.length; i++){
if((lowestBit & nums[i]) === 0){
res[0] ^= nums[i]
} else {
res[1] ^=nums[i]
}
}
return res
};
map 자료구조를 사용하지않아서 그런지
메모리효율이 더 좋은 풀이였습니다.
무슨뜻인지는 몰?루
반응형
'leetcode' 카테고리의 다른 글
1302. Deepest Leaves Sum (0) | 2023.04.19 |
---|---|
169. Majority Element (0) | 2023.03.07 |
2341. Maximum Number of Pairs in Array (1) | 2023.02.03 |
2442. Count Number of Distinct Integers After Reverse Operations Javascript (0) | 2023.01.21 |
2491. Divide Players Into Teams of Equal Skill Javascript (0) | 2023.01.21 |