Leetcode 349 两个数组的交集 (哈希表)

Leetcode 349 两个数组的交集 (哈希表)

    • 解法1
    • 解法2

Leetcode 349 两个数组的交集 (哈希表)_第1张图片

解法1

自己的笨比方法:【哇这居然是标准解法之一,我不是笨比】
创建了两个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;
    }
}  

解法2

时间复杂度O(N)
空间复杂度O(N)




你可能感兴趣的:(Leetcode,leetcode,散列表,java)