两个数组的交集

给定两个数组,写一个方法来计算它们的交集。
例如:
给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].

注意:

输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。

分析:用一个哈希表将第一个数组的元素当做键,出现次数当做值传进去,遍历第二个数组时,如果有相同元素,num>0,就会将值传入结果数组,并减一次num

public int[] intersect(int[] nums1, int[] nums2) {
            int num = 0;
            List<Integer> li = new ArrayList();
            //这个哈希表,键是数,值是出现的次数
            HashMap<Integer,Integer> map = new HashMap<>();
            for(int i :nums1){
                num= map.get(i)!=null?map.get(i):0;
                map.put(i,num+1);
                }
            //遍历第二个数组
            for(int i :nums2){
                num= map.get(i)!=null?map.get(i):0;
                if(num>0){
                    li.add(i);
                    map.put(i,num-1);
                }
            }
            int[] result = new int[li.size()];
            for(int i=0;i<li.size();i++){
                result[i]=li.get(i);
            }
            return result;
    }

猜你喜欢

转载自blog.csdn.net/weixin_40787587/article/details/81570470
今日推荐