Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- electron-packager
- npm package
- 티스토리 성능
- silent printing
- Each child in a list should have a unique "key" prop.
- html
- github pdf
- nextjs
- camera permission
- augmentedDevice
- camera access
- dvh
- ffi-napi
- react-native-dotenv
- Git
- animation
- 이미지 데이터 타입
- device in use
- Recoil
- Failed to compiled
- Can't resolve
- rolldown
- github 100mb
- ELECTRON
- adb pair
- custom printing
- vercel git lfs
- adb connect
- react-native
- github lfs
Archives
- Today
- Total
Bleeding edge
[LeetCode] 2206. Divide Array Into Equal Pairs - 자바스크립트 0627 본문
https://leetcode.com/problems/divide-array-into-equal-pairs/
Divide Array Into Equal Pairs - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
앞으로 문제풀이를 할 때 효율성이 낮으면 반드시 효율성이 낮은 이유를 검색해보고 풀어야겠다.
1. 문제는 간단하다 2개의 짝이 떨어지는 경우를풀이를 해야하기 때문에 sort를 했다.
let answer = nums.sort((a, b) => a - b)
2. 그리고 i와 i-1이 같은경우에는 두개다 pop으로 처리하고, i를 2씩 더했으며, 성립하지 않는경우 false를 리턴했다.
for (let i = answer.length - 1; i > 0; i -= 2) {
if (answer[i] === answer[i - 1]) {
answer.pop()
answer.pop()
} else {
return false
}
}
전체풀이
var divideArray = function (nums) {
let answer = nums.sort((a, b) => a - b)
for (let i = answer.length - 1; i > 0; i -= 2) {
if (answer[i] === answer[i - 1]) {
answer.pop()
answer.pop()
} else {
return false
}
}
return true
};
개인적으로는 내 풀이의 효율성보다 너무좋은 풀이를 봐서 그문제를 보려고한다.
1. hash를 만든다
const hash = {};
2. has가 존재한다면 hash+1 없다면 0을 넣는다
nums.map((num) => (hash[num] = (hash[num] || 0) + 1));
3. hash에 값이 짝수인지 체크한다
for (let key in hash) {
if (hash[key] % 2 !== 0) return false;
}
전체풀이
var divideArray = function(nums) {
const hash = {};
nums.map((num) => (hash[num] = (hash[num] || 0) + 1));
for (let key in hash) {
if (hash[key] % 2 !== 0) return false;
}
return true;
};
내풀이는 125ms, 아래의 풀이는 71ms이다. 내가 생각했을때 우선, sort를 쓰나, map을 사용하다 소요된 시간은 같으나, sort를하면서 pop을 두번씩 하는 과정에서 시간차이가 많이난 것 같다.