0
点赞
收藏
分享

微信扫一扫

349. 两个数组的交集

千妈小语 2022-03-16 阅读 91

LeetCode链接

集合法

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> s1 = new HashSet<>();
        Set<Integer> s2 = new HashSet<>();
        for(int i: nums1){ // 存入 nums1 中所有不重复的元素
            s1.add(i);
        }
        for(int i: nums2){ // 存入 nums2 中所有不重复的元素
            s2.add(i);
        }

        Set<Integer> s3 = new HashSet<>();
        for(int i: s1){
        	// 将两个集合中都存在的元素加入 s3
            if(s2.contains(i)) s3.add(i);
        }

        int[] res = new int[s3.size()];
        int index = 0;
        for(int i: s3){
            res[index] = i;
            index++;
        }
        
        return res;
    }
}

参考了题解

  • 时间复杂度:O(m+n)
  • 空间复杂度:O(m+n)

集合法 II

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set = new HashSet<>();
        List<Integer> list = new ArrayList<>();

        for(int i: nums1){
            set.add(i);
        }

        for(int i: nums2){
            if(set.contains(i)){
                list.add(i);
                set.remove(i);
            }
        }

        int[] res = new int[list.size()];
        int j = 0;
        for(int i: list){
            res[j] = i;
            j++;
        }

        return res;
    }
}

参考了题解,这个写法薛微快一点

  • 时间复杂度:O(m+n)
  • 空间复杂度:O(m+n)
举报

相关推荐

0 条评论