N

(Leet Code c++)Intersection of Two Arrays2 본문

Leet Code 알고리즘

(Leet Code c++)Intersection of Two Arrays2

naeunchan 2021. 8. 4. 10:18
728x90
반응형

350. Intersection of Two Arrays II

 

Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.

 

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4] Output: [4,9] Explanation: [9,4] is also accepted.

 

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

주어진 nums1과 nums2의 공통 원소를 벡터에 담아 리턴.

 

우선 nums1의 원소를 카운팅 한다.

중복되는 원소도 겹치는 수만큼 담아야 하기 때문이다.

 

check 벡터에 nums1의 원소 개수를 카운팅.

이후 num2의 원소를 확인하면서 check 벡터에서 1개 이상인 원소는 answer에 담는다.

answer에 담은 경우 check에 있는 해당 원소 카운팅을 줄이면 된다.

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        vector<int> check(1001, 0);
        vector<int> answer;
        
        for(int i = 0; i < nums1.size(); i++){
            check[nums1[i]]++;
        }
        
        for(int i = 0; i < nums2.size(); i++){
            if(check[nums2[i]] > 0){
                answer.push_back(nums2[i]);
                check[nums2[i]]--;
            }
        }
        
        return answer;
    }
};
728x90
반응형