배열의 겹치는 부분을 찾는 문제다.
1은 여러번 겹쳐도 하나만 리턴하면 되고,
2는 여러번 겹치면 여러개를 리턴해야 한다.
Intersection of Two Arrays I
var intersection = function(nums1, nums2) {
    const answer = []
    for (n1 of nums1) {
        if(nums2.includes(n1)){
            answer.push(n1)
        }
    }
    return Array.from(new Set(answer));
};nums1 배열을 반복을 돌면서 nums2에도 있다면 삭제하고 answer 배열에 담는 방식으로 풀었다.
var intersection = function(nums1, nums2) {
    const answer = nums1.filter((n1) => nums2.includes(n1))
    return Array.from(new Set(answer));
};filter를 사용해 축약할수도 있다.
var intersection = function(nums1, nums2) {
    const arr1 = Array.from(new Set(nums1));
    const answer = arr1.filter((n1) => nums2.includes(n1))
    return answer;
};아니면 애초에 배열 하나 또는 둘 다 unique하게 만든 후 해도 좋을 것 같다.
Intersection of Two Arrays II
var intersect = function(nums1, nums2) {
    const answer = [];
    for(let n1 of nums1) {
        const index = nums2.indexOf(n1);
        if(index > -1) {
            const deleted = nums2.splice(index, 1);
            answer.push(deleted[0]);
        }
    }
    return answer;
};nums1의 반복을 돌면서, nums2에 있으면 삭제하고 answer배열에 담는다.
var intersect = function(nums1, nums2) {
    const answer = [];
    // 정렬 후, 더 짧은 배열로 반복을 돌면 배열이 길 때 좋을 것 같다.
    nums1.sort();
    nums2.sort();
    let short = nums1;
    let long = nums2;
    if (nums1.length > nums2.length){
        short = nums2;
        long = nums1;
    }
    for(let n1 of short) {
        const index = long.indexOf(n1)
        if(index > -1) {
            const deleted = long.splice(index, 1);
            answer.push(deleted[0])
        }
    }
    return answer;
};
'Web development > Algorithm' 카테고리의 다른 글
| [LeetCode] 46. Permutations 순열 (Javascript) (0) | 2020.07.22 | 
|---|---|
| [LeetCode] 11. Container With Most Water (Javascript) (0) | 2020.07.21 | 
| [LeetCode] 189. Rotate Array (Javascript) (0) | 2020.07.20 | 
| [HackerRank 30 Days of Code] Day 5 ~ Day 7 (0) | 2020.07.13 | 
| [javascript] 큐, 스택 구현 (0) | 2020.07.08 | 
 
										
									 
										
									 
										
									 
										
									
댓글