# LeetCode 2248. Intersection of Multiple Arrays [LeetCode 2248. Intersection of Multiple Arrays](https://leetcode.com/problems/intersection-of-multiple-arrays/) (<font color=#00AF9B>Easy</font> 68.2%) <!-- (<font color=#00AF9B>Easy</font> 53.8%) (<font color=#FFB800>Medium</font> 39.6%) (<font color=#FF375F>Hard</font>) --> - 限制 : <ul> <li><code>1 <= nums.length <= 1000</code></li> <li><code>1 <= sum(nums[i].length) <= 1000</code></li> <li><code>1 <= nums[i][j] <= 1000</code></li> <li><code>All the values of nums[i] are unique.</code></li> </ul> - Solution 1 這種方法比較基本,就是一個一個去比對有沒有交集,一路找到最後為止。效能比較差,但也不錯。 - 時間複雜度: $O(n^2)$ - 空間複雜度: $O(n)$ - 程式碼 ```c++= class Solution { public: vector<int> findintersection(vector<int> a, vector<int> b) { vector<int> result; if(a.size() > b.size()) { swap (a,b); } unordered_set<int> ub(b.begin(), b.end()); for(auto& num: a) { if(ub.find(num) != ub.end()) { result.push_back(num); } } return result; } vector<int> intersection(vector<vector<int>>& nums) { vector<int>result = nums[0]; for(auto& num:nums) { result = findintersection(result, num); } sort(result.begin(), result.end()); return result; } }; ``` - Solution 2 這種方法適用在集合元素較少的情況下,一一確認每一個陣列(集合)的元素並做記號,最後檢查每個元素是否有被所有的陣列(集合)屬於。 - 時間複雜度: $O(n^2)$ - 空間複雜度: $O(1)$ - 程式碼 ```c++= class Solution { public: vector<int> intersection(vector<vector<int>>& nums) { vector<int> index(1001, 0); for (auto& itr : nums) { for (auto& it : itr) index[it]++; } vector<int> result; for (int i = 0; i < 1001; i++) { switch (index[i] - nums.size()) { case 0: result.push_back(i); break; } } return result; } }; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up