网站排名下降原因西安seo网络优化公司
Leetcode 349 两个数组的交集 (哈希表)
- 解法1 😋
- 解法2
解法1 😋
自己的笨比方法:【哇这居然是标准解法之一,我不是笨比😋😋😋】
创建了两个hash数组,nums1出现一个就对应位置变为-1,nums2出现一个对应位置就为-1,之后如果nums1[m]+nums2[m]
== -2,则说明是交集,使用arr.add()加到末尾,最后再将ArrayList 转化为int[ ] 数组
// ArrayList<Integer> 转化为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;}
}
解法2
时间复杂度O(N)
空间复杂度O(N)