描述:
返回两个数组的交
注意事项
- Each element in the result must be unique.
- The result can be in any order.
样例:
nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2]
.
思路:
这道题建立了一个哈希函数,建立数组a[ ]=0,令a[x]=1,其中x为nums1或nums2中de数,最后遍历数组a[ ],返回值等于1的下标就是两组数的交。
但由于没有找到更合适的哈希函数解决负数的问题,于是下标加了一个非常大的数,感觉这道题是水过的~
AC代码:
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
int a[900005];
int i;
vector<int>v;
memset(a,0,sizeof(a));
for(i=0;i<nums1.size();i++)
{
a[nums1[i]+200000]=1;
}
for(i=0;i<nums2.size();i++)
{
if(a[nums2[i]+200000]==1)
{
v.push_back(nums2[i]);
a[nums2[i]+200000]=0;
}
}
return v;
}
};