카테고리 없음
[LeetCode] 2206. Divide Array Into Equal Pairs - 자바스크립트 0627
codevil
2022. 6. 27. 12:34
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을 두번씩 하는 과정에서 시간차이가 많이난 것 같다.