题目描述
题目限制0 <= nums1[i], nums2[i] <= 1000,所以可以开辟一个1001个元素的数组来做哈希表。
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> table(1001,0);for(int n:nums1){table[n]++;}vector<int> res;for(int n:nums2){if(table[n] >0){res.push_back(n);table[n] = 0;}}return res;}
};
也可以用unordered_set
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> table;for(int n:nums1){if(!table.contains(n)){table.insert(n);}}vector<int> res;for(int n:nums2){if(table.contains(n)){res.push_back(n);table.erase(n);}}return res;}
};
如图所示unordered_set可以直接用vector构造
更简洁的代码:
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> table(nums1.begin(),nums1.end());vector<int> res;for(int n:nums2){if(table.contains(n)){res.push_back(n);table.erase(n);}}return res;}
};