zoukankan      html  css  js  c++  java
  • LeetCode349、350. 两个数组的交集

     分析:使用集合

    import java.util.ArrayList; // 动态数组
    import java.util.TreeSet; // 基于搜索树的集合类
    
    class Solution {
        public int[] intersection(int[] nums1, int[] nums2) {
            TreeSet<Integer> set = new TreeSet<>();
            for(int num: nums1){
                set.add(num);  // 对nums1去重
            }
            
            ArrayList<Integer> list = new ArrayList<>();
            for(int num : nums2){
                if(set.contains(num)){
                    list.add(num);
                    set.remove(num);  // 把添加过的元素删除,下一轮就找不到这个元素了
                }
            }
            int[] res = new int[list.size()];
            for(int i = 0 ;i <list.size() ; i++){
                res[i] = list.get(i);
            }
            return res;
    
        }
    }
    Solution 1

     

     

     分析:可以使用允许用重复元素的集合,也可以使用映射(元素,频次)

    import java.util.ArrayList;
    import java.util.TreeMap; // 基于平衡二叉树的映射类
    class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
    
            TreeMap<Integer, Integer> map = new TreeMap<>();
            for(int num : nums1){
                if(!map.containsKey(num)){
                    map.put(num, 1);
                }
                else{
                    map.put(num, map.get(num) + 1);
                }
            }
            ArrayList<Integer> list = new ArrayList<>();
            for(int num : nums2){
                if(map.containsKey(num)){
                    list.add(num);
                    map.put(num, map.get(num) - 1);
                    if(map.get(num) == 0){
                        map.remove(num);
                    }
                }
    
            }
            int[] res = new int[list.size()];
            for(int i = 0 ; i < list.size(); i++){
                res[i] = list.get(i);
            }
            return res;
    
        }
    }
    Solution 1
  • 相关阅读:
    angularjs里对JS的lowercase和uppercase的完善
    UVA
    UVA
    MySQL 8.0X的安装与卸载命令
    回文树(模板+例题)
    UESTC
    UVALive
    BZOJ
    ACM-ICPC 2018 南京赛区网络预赛 I Skr (马拉车+hash去重)或(回文树)
    ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/12830321.html
Copyright © 2011-2022 走看看