[리트코드] 350. Intersection of Two Arrays II
350. Intersection of Two Arrays II
나의 풀이(splice)
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function (nums1, nums2) {
const ans = [];
nums1.forEach(v => {
if (nums2.includes(v)) {
nums2.splice(nums2.indexOf(v), 1);
ans.push(v);
}
});
return ans;
};
console.log(intersect([1, 2, 2, 1], [2, 2]));
nums1을 순회하며 공통인 것을 구하고, 구한 값은 nums2에서 삭제하였다.
나의 풀이 (hash)
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function (nums1, nums2) {
const ans = [];
const hash = nums1.reduce((acc, cur) => {
acc[cur] = (acc[cur] || 0) + 1;
return acc;
}, {});
nums2.forEach(v => {
if (hash[v]) {
ans.push(v);
hash[v]--;
}
});
return ans;
};
console.log(intersect([1, 2, 2, 1], [2, 2]));
nums1 을 hash에 저장한 뒤, nums2를 순회하며 hash를 감소하였다.