题目:给定两个数组,编写一个函数来计算它们的交集。
示例:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]
解法:排序 双指针
import java.util.Arrays;
//题目:给定两个数组,编写一个函数来计算它们的交集。
public class Intersect {
public int[] intersect(int[] nums1, int[] nums2){
Arrays.sort(nums1); // 先对两个数组进行排序
Arrays.sort(nums2);
int length1 = nums1.length, length2 = nums2.length;
int[] intersection = new int[Math.min(length1, length2)]; // 创建一个新数组
int index1 = 0, index2 = 0, index = 0;
while ((index1 < length1) && (index2 < length2)) { // 双指针
if (nums1[index1] < nums2[index2]) {
index1++;
} else if (nums1[index1] > nums2[index2]) {
index2++;
} else {
intersection[index] = nums1[index1];
index1++;
index2++;
index++;
}
}
return Arrays.copyOfRange(intersection, 0, index); // 复制数组里的元素 [0,index)
}
}