题目地址:
https://leetcode.com/problems/intersection-of-three-sorted-arrays/description/
给定三个升序数组,返回在三个数组中都出现过的数。从小到大返回。
可以用平衡树。代码如下:
class Solution {
public:
vector<int> arraysIntersection(vector<int>& a1, vector<int>& a2,
vector<int>& a3) {
map<int, int> mp;
for (auto a : {a1, a2, a3})
for (int x : a) mp[x]++;
vector<int> res;
for (auto& [k, v] : mp)
if (v == 3) res.push_back(k);
return res;
}
};
时间复杂度 O ( n log n ) O(n\log n) O(nlogn), n n n为数字总数,空间 O ( n ) O(n) O(n)。