public class Solution {
public int[] Intersection(int[] nums1, int[] nums2) {
Dictionary<int,int> dic=new Dictionary<int,int>(); //输出的数组中不能有重复,考虑用字典来存储
Array.Sort(nums1); //想要使用二分法,数组必须先排序
Array.Sort(nums2);
for(int i=0;i<nums1.Length;i++)
{
if(Search(nums2,nums1[i]) && !dic.ContainsKey(nums1[i])) //将数组1中的每个数用来当做target,在数组2中查找
{
dic.Add(nums1[i],i);
}
}
int[] ans=new int[dic.Count];
ans=dic.Keys.ToArray();
return ans;
}
public bool Search(int[] num,int t) //二分法用来查找数组1中的数在数组2中是否存在
{
int left=0;
int right=num.Length-1;
while(left<=right)
{
int mid=((right-left)>>1)+left;
if(num[mid]==t)
{
return true;
}
else if(num[mid]<t)
{
left=mid+1;
}
else
{
right=mid-1;
}
}
return false;
}
}
LeetCode 349. 两个数组的交集
最新推荐文章于 2024-07-25 19:34:38 发布