自己的笨比方法:【哇这居然是标准解法之一,我不是笨比】
创建了两个hash数组,nums1出现一个就对应位置变为-1,nums2出现一个对应位置就为-1,之后如果nums1[m]+nums2[m]
== -2,则说明是交集,使用arr.add()加到末尾,最后再将ArrayList 转化为int[ ] 数组
// ArrayList 转化为int[ ] 数组
int[] array = new int[arr.size()];
for(int i = 0; i < arr.size(); i++){
array[i] = arr.get(i);
}
时间复杂度O(N)
空间复杂度O(N)
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
// 数组作为hash表
ArrayList<Integer> arr = new ArrayList<>();
int[] hash1 = new int[1001];
int[] hash2 = new int[1001];
for(int i = 0; i < nums1.length; i++){
hash1[nums1[i]] = -1;
}
for(int j = 0; j < nums2.length; j++){
hash2[nums2[j]] = -1;
}
for(int m = 0; m <= 1000; m++){
if(hash1[m]+hash2[m] == -2){
arr.add(m);
}
}
int[] array = new int[arr.size()];
for (int i = 0; i < arr.size(); i++) {
array[i] = arr.get(i);
}
return array;
}
}
时间复杂度O(N)
空间复杂度O(N)