美文网首页工作生活
349-两个数组的交集

349-两个数组的交集

作者: 饮酒醉回忆 | 来源:发表于2019-07-04 10:18 被阅读0次

两个数组的交集

题目

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]

说明:

输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

  • 暴力遍历,可以将两个数组嵌套遍历,将重复数字存入set集合.最后转为int[]数组返回.但是这样时间复杂度会很高
  • 将其中一个数组存入set集合,然后依次按另一个数组get,get到的放入结果set中.此处使用stream的和使用遍历差距很大.

代码

  • 使用流式处理,耗时78ms
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        if(nums1.length == 0 || nums2.length == 0){
            return new int[]{};
        }
        HashSet<Integer> set = new HashSet<>();
        for(int i = 0;i < nums1.length;i++){
            set.add(nums1[i]);
        }
        HashSet<Integer> resultSet = new HashSet<>();
        for(int i = 0;i < nums2.length;i++){
            if(set.contains(nums2[i])){
                resultSet.add(nums2[i]);
            }
        }
        return resultSet.stream().mapToInt(Number::intValue).toArray();
    }
}
  • 使用遍历处理.耗时7ms
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
                //
        if(nums1.length == 0 || nums2.length == 0){
            return new int[]{};
        }
        HashSet<Integer> set = new HashSet<>();
        for(int i = 0;i < nums1.length;i++){
            set.add(nums1[i]);
        }
        HashSet<Integer> resultSet = new HashSet<>();
        for(int i = 0;i < nums2.length;i++){
            if(set.contains(nums2[i])){
                resultSet.add(nums2[i]);
            }
        }
        int[] result = new int[resultSet.size()];
        int i = 0;
        for (Integer integer : resultSet) {
            result[i++] = integer;
        }
        return result;
    }
}

相关文章

  • 349-两个数组的交集

    两个数组的交集 题目 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 示例 2: 说明: 输出结果中的每...

  • 349-两个数组的交集

    给定两个数组,编写一个函数来计算它们的交集。 示例 1:输入: nums1 = [1,2,2,1], nums2 ...

  • leecode刷题(6)-- 两个数组的交集II

    leecode刷题(6)-- 两个数组的交集II 两个数组的交集II 描述: 给定两个数组,编写一个函数来计算它们...

  • 2021-03-05富途社区C/C++后台一面

    两个有序数组求交集 两个数组A和B,A数组超大,内存装不下,求数组A和数组B的交集 字符串删空格 单向链表,给定链...

  • Javascript Array

    数组常用方法 面试题 求两个数组的交集和差集 交集 差集

  • 两个数组的交集[数组]

    链接:java中CopyOf的用法 题目描述 实现思路 两个数组排序 判断两个数组谁比较小 在较大的数组中遍历一遍...

  • [LeetCode][Python]349. 两个数组的交集

    [LeetCode][Python]349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 ...

  • JS数组 并集 交集 差集

    JS数组 并集 交集 差集 现有两个数组a=[1, 2, 3];b=[2, 4, 5],求数组的并集,交集,合集 ...

  • 2020-07-13 leetcode 两个数组的交集 II

    leetcode 两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 示例 2: 说明...

  • 算法集合

    1查找表问题 两个数组的交集 II-350 给定两个数组,编写一个函数来计算它们的交集。 为两个数组分别建立 ma...

网友评论

    本文标题:349-两个数组的交集

    本文链接:https://www.haomeiwen.com/subject/fcclhctx.html