https://leetcode.cn/problems/intersection-of-two-arrays/description/
查询元素是否重复出现,联想到使用哈希表
<aside> 💡
使用数组1的元素构建哈希表,使用数组2的元素对其进行查询,能够查找到说明该元素在两个数组中重复出现,即是两数组的交集。
</aside>
使用unordered_set
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> st;
unordered_set<int> ans;
for (auto i : nums1) {
st.insert(i);
}
for (auto i : nums2) {
if (st.find(i) != st.end()) {
ans.insert(i);
}
}
return vector<int>(ans.begin(), ans.end());
}
使用vector
由于题目有限制两个数组的元素值都<=1000,所以满足使用数组构建哈希表的条件。
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// nums1和nums2中的元素值都<=1000
vector<int> record1(1001, 0);
vector<int> record2(1001, 0);
vector<int> ans;
for (int i : nums1) {
++record1[i];
}
for (int i : nums2) {
++record2[i];
}
for (int i = 0; i < record1.size(); ++i) {
// 数组1和数组2中都出现过的元素即为交集
if (record1[i] != 0 && record2[i] != 0) {
ans.push_back(i);
}
}
return ans;
}