这个题,纯暴力的话会超时。思路:
先把两个数组排序,创建一个动态数组,用两个指针分别从头遍历两个静态数组。
若两个指针指的值相同,把值传到动态数组中,两个指针同时后移一步。
若两个指针指的值不同,则指的值较小的指针后移一步,另一个不动。
代码:
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
int i = 0;
int j = 0;
int l1 = nums1.length;
int l2 = nums2.length;
Arrays.sort(nums1);
Arrays.sort(nums2);
ArrayList<Integer> list = new ArrayList<Integer>();
while (i < l1& j < l2) {
if (nums1[i]==nums2[j]){
list.add(nums1[i]);
i++;
j++;
}
else {
if (nums1[i]<nums2[j]) {
i++;
}
else {
j++;
}
}
}
int size = list.size();
int []r = new int[size];
for (int p = 0; p < size; p++) {
r[p] = list.get(p);
}
return r;
}
}