본문 바로가기
알고리즘

[알고리즘] Intersection of Two Arrays 2

by keel_im 2021. 2. 13.
반응형

포인트

1. map, dictionary 를 이용해서 수를 계산을 하고 중복되는 값을 찾아보자

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

c++/cpp

#include <bits/stdc++.h>

using namespace std;

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        unordered_map<int, int> map;
        if(nums1.size() < nums2.size()){
            swap(nums1, nums2);
        }

        for(auto ele : nums1){
            map[ele]+=1;
        }
        vector<int> result;
        for (auto ele: nums2){
            if(map[ele]>0){
                map[ele]-=1;
                result.push_back(ele);
            }
        }
        sort(result.begin(), result.end());
        return result;
    }
};

python

class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:

        if len(nums1) < len(nums2):
            nums1, nums2 = nums2, nums1
        dict1 = {}
        for ele in nums1:
            dict1[ele] = dict1.get(ele, 0) + 1
        result = []
        for ele in nums2:
            if(dict1.get(ele, 0)!=0):
                dict1[ele]-=1
                result.append(ele)
        return sorted(result)


반응형

댓글