Skip to main content

2248.多个数组求交集

思路

用一个标记数组,标记元素出现的次数,可以看到数组元素的范围是 1 - 1000,数组不大,可以利用空间换时间的特点记录每个元素出现的次数,最后遍历一次标记数组,选择出出现次数大于二维数组 nums 长度的元素,加入到答案数组中即可。

代码

class Solution {
public:
static const int N = 1e3 + 10;
int a[N];
vector<int> intersection(vector<vector<int>>& nums) {
for (int i = 0 ; i < nums.size(); i++) {
for (int j = 0; j < nums[i].size(); j++) {
a[nums[i][j]]++;
}
}
vector<int> res;
for (int i = 0; i < 1010; i++ ) {
if (a[i] >= nums.size()) res.push_back(i);
}
return res;
}
};