题目:
Given two arrays, write a function to compute their intersection.
给出两个数组,找出他们的交集
Example:
Given nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, return [2]
.
Note:
- Each element in the result must be unique.
- 每个数组的结果必须唯一
- The result can be in any order.
- 结果顺序不要求排序
思路:
1、遍历第一个数组,分别与第二个数组的每个数比较,判断是否有相同,有则将该数交换到第二个数组的第一个位置。2、改变第二个数组的索引位置,从下一个位置开始。
2.1内部循环结束,增加判断,第二数组是否已有该数,有则索引位置回调一位,结束本次循环,否则继续。
3、记录索引位置,输出交集长度
public int[] Intersection(int[] nums1, int[] nums2) {
int len1 = nums1.Length, len2 = nums2.Length, count = 0;
int min =len1<len2 ? len1 : len2;
if(len1 == 0|| len2 == 0)
{
return new int[]{};
}
for(int i = 0; i < len1 ; i++)
{
for(int j = count; j < len2 ; j++)//第二个数组循环查找
{
if(nums1[i] == nums2[j])
{
int temp = nums2[j];
nums2[j] = nums2[count];
nums2[count ] =temp;
count++;
j = len2;
}
}
for(int k = count -1; k >= 0 ; k--) //删除数组中重复项
{
if(nums2[k] == nums2[count-1]&& k!=(count-1) ) //关键是不比较下标相同的数
{
count--;
k=0;
}
}
}
int [] insert = new int[count] ;
for(int i = 0; i<count ;i++)
{
insert[i] = nums2[i];
}
return insert;
}