给定两个数组,编写一个函数来计算它们的交集
1.方法一:
public int[] Restult(int[]num1,int[]num2)
{
if(num1.Length<=0||num2.Length<=0)return int[]{};
//将两个数组进行排序
num1=num1.OrderBy(a => a).ToArray();
num2=num2.OrderBy(a => a).ToArray();
List<int> resultS=new List<int>();
int i=0,j=0;
while(i<num1.Length&&j<num2.Length)
{
if(num1[i]<num2[j])
{
i++;
}
else if(num1[i]>num[j])
{
j++;
}
else
{
resultS.Add(num1[i])
i++;
j++;
}
}
return result.ToArray();
}
2.方法二:
public int[] Restult(int[]num1,int[]num2)
{
if(num1.Length<=0||num2.Length<=0)return int[]{};
//将数组小的存入小数组中,大数组存入大数组中
int[] minNum=num1.Length <= num2.Length ? num1:num2;
int[] maxNum=num1.Length <= num2.Length ? num2: num1;
Dictionary<int,int> minDic=new Dictionary<int,int>();
for(int i=0;i<minNum.Length;i++)
{
if(!minDic.ContainsKey(minNum[i]))
{
minDic.Add(minNum[i],0);
}
else
{
minDic[minNum[i]]++;
}
}
List<int> results=new List<int>();
for(int i=0;i<maxNum.Length;i++)
{
if(minDic.ContainsKey(maxNum[i])&&minDic[maxNum[i]]>=0)
{
results.Add(maxNum[i]);
minDic[maxNum[i]]--;
}
}
return results.ToArray();
}
3.方法三:
public int[] Result(int[]nums1,int[] nums2)
{
Dictionary<int,int> minDic=new Dictinary<int,int>();
List<int> results=new List<int>();
for(int i=0;i<nums1.Length;i++)
{
if(minDic.ContainsKey(nums1[i]))
{
minDic[nums1[i]]++;
}
else
{
minDic.Add(nums1[i],1);
}
}
for(int i=0;i<nums2.Length;i++)
{
if(minDic.ContainsKey(nums2[i])&&minDic[nums2[i]]>0)
{
minDic[nums2[i]]--;
results.Add(nums2[i]);
}
}
return results.ToArray();
}
4.方法四:
public int[] Result(int[] nums1,int[] nums2)
{
HashSet<int> haset=new HashSet<int>();
List<int> results=new List<int>();
for(int i=0;i<nums1.Length;i++)
{
for(int j=0;j<nums.Length;j++)
{
if(nums1[i]==nums2[j]&&!hast.Contains(j))
{
results.Add(nums1[i]);
haset.Add(j);
break;
}
}
}
return results.ToArray();
}