给定两个整数数组分别为
,
,找到它们的公共元素并按返回。
数据范围:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型vector
* @param nums2 int整型vector
* @return int整型vector
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// write code here
vector<int> tmp1(1010,0);
vector<int> tmp2(1010,0);
vector<int> ret(0);
int sz1=nums1.size();
int sz2=nums2.size();
for(int i=0;i<sz1;i++){
tmp1[nums1[i]]=1;
}
for(int j=0;j<sz2;j++){
tmp2[nums2[j]]=1;
}
for(int k=0;k<=1000;k++){
if(tmp1[k] && tmp2[k]){
ret.push_back(k);
}
}
return ret;
}
}; class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型vector
* @param nums2 int整型vector
* @return int整型vector
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
int hash1[1010] = {0}, hash2[1010] = {0};
int n1 = nums1.size(), n2 = nums2.size();
vector<int> ret;
for(int x : nums1) hash1[x]++;
for(int x : nums2) hash2[x]++;
for(int i = 0; i < 1010; i++)
if(hash1[i] && hash2[i])
ret.push_back(i);
return ret;
}
}; package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型一维数组
* @param nums2 int整型一维数组
* @return int整型一维数组
*/
func intersection( nums1 []int , nums2 []int ) []int {
cnt1,cnt2:=map[int]int{},map[int]int{}
for _,x:=range nums1{
cnt1[x]++
}
for _,x:=range nums2{
cnt2[x]++
}
ans:=[]int{}
for k,_:=range cnt1{
if _,ok:=cnt2[k];ok{
ans=append(ans,k)
}
}
return ans
}
func min(a,b int)int{
if a>b{
return b
}
return a
} /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型一维数组
* @param nums1Len int nums1数组长度
* @param nums2 int整型一维数组
* @param nums2Len int nums2数组长度
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* intersection(int* nums1, int nums1Len, int* nums2, int nums2Len, int* returnSize ) {
// write code here
int* hash=(int *)calloc(1000,sizeof(int));
int* ans=(int *)malloc(1000*sizeof(int));
for(int i=0;i<nums1Len;i++){
hash[nums1[i]-1]=1;
}
int count=0;
for(int j=0;j<nums2Len;j++){
if(hash[nums2[j]-1]==1){
hash[nums2[j]-1]+=1;
if(hash[nums2[j]-1]==2){
ans[count++]=nums2[j];
}
}
}
*returnSize=count;
return ans;
} public ArrayList<Integer> intersection (ArrayList<Integer> nums1, ArrayList<Integer> nums2) {
// write code here
ArrayList<Integer> result = new ArrayList<Integer>();
for (int i = 0; i < nums1.size(); i++) {
if (nums2.contains(nums1.get(i))) {
result.add(nums1.get(i));
while(nums2.remove(nums1.get(i)));
}
}
return result;
} class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型vector
* @param nums2 int整型vector
* @return int整型vector
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
// write code here
unordered_set<int> arr1, arr2;
for(auto& au:nums1)
{
arr1.insert(au);
}
for(auto& au:nums2)
{
arr2.insert(au);
}
return GetIntersection(arr1, arr2);
}
vector<int> GetIntersection(unordered_set<int>& arr1, unordered_set<int>& arr2)
{
if(arr1.size()>arr2.size())
return GetIntersection(arr2, arr1);
vector<int> arr3;
for(auto& au:arr1)
{
if(arr2.count(au))
arr3.push_back(au);
}
return arr3;
}
}; import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型ArrayList
* @param nums2 int整型ArrayList
* @return int整型ArrayList
*/
public ArrayList<Integer> intersection (ArrayList<Integer> nums1, ArrayList<Integer> nums2) {
// write code here
HashSet<Integer> set = new HashSet<>();
HashSet<Integer> temp = new HashSet<>();
ArrayList<Integer> res = new ArrayList<>();
for (int i = 0; i < nums1.size(); i++) {
set.add(nums1.get(i));
}
for (int i = 0; i < nums2.size(); i++) {
if (set.contains(nums2.get(i))) {
temp.add(nums2.get(i));
}
}
for (int t : temp) {
res.add(t);
}
return res;
}
}