zoukankan      html  css  js  c++  java
  • leetcode| Intersection of Two Arrays II

    Given two arrays, write a function to compute their intersection.

    Example:
    Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2, 2].

    题目:升级版找两个数组的交集,初级版只对交集元素有要求,这个升级版还对元素的数量有要求

    思路:偷懒一下,用Intersection of Two Arrays 的算法改动一下,看了下讨论,基本也是用hash,欢迎交流不同解法

    public int[] intersect(int[] nums1, int[] nums2) {
      int len1 = nums1.length;
      int len2 = nums2.length;

      if(len1==0 || len2==0){
        return new int[0];
      }

      HashMap<Integer,Integer> map1 = new HashMap<Integer,Integer>();
      HashMap<Integer,Integer> map2 = new HashMap<Integer,Integer>();

      for(int i = 0;i<len1;i++){
        Integer temp = map1.get(nums1[i]);
        if(temp == null){
          map1.put(nums1[i],1);
        }else{
          map1.put(nums1[i],temp+1);
        }
      }

       for(int i = 0;i<len2;i++){
        Integer temp = map2.get(nums2[i]);
        if(temp == null){
          map2.put(nums2[i],1);
        }else{
          map2.put(nums2[i],temp+1);
        }
      }

      boolean flag = map1.size()>map2.size();
      if(!flag){
        HashMap<Integer,Integer> tempMap = map1;
        map1 = map2;
        map2 = tempMap;
      }
      List<Integer> resList = new ArrayList<Integer>();
      for(Entry e : map1.entrySet()){
        Integer key = (Integer)e.getKey();
        Integer v1 = (Integer)e.getValue();
        if(map2.get(key)!=null){
        Integer v2 = map2.get(key);
        int n = v1>v2?v2:v1;
        for(int i = 0;i<n;i++){
          resList.add(key);
          }
        }
      }
      int resSize = resList.size();
      int res [] = new int[resSize];
      for(int i = 0;i<resSize;i++){
        res[i] = resList.get(i);
      }
      return res;
    }

    StayHungry 求知若渴 StayFoolish 放低姿态
  • 相关阅读:
    HttpRuntime.Cache的使用经验
    js 字符串中取得第一个字符和最后一个字符
    CSAPP笔记-第一章
    共和党减税法案的个人减税
    bash学习进行中
    建站日志
    Python学习进行中
    Check your data! 数据预处理血泪教训
    bash
    【python技巧系列】在循环中处理异常并继续运行
  • 原文地址:https://www.cnblogs.com/wujunjie/p/5688010.html
Copyright © 2011-2022 走看看