Java实现-两数组的交2

来源:互联网 发布:淘宝的减肥药有用吗 编辑:程序博客网 时间:2024/05/22 12:05

计算两个数组的交

 注意事项

每个元素出现次数得和在数组里一样
答案可以以任意顺序给出

样例

nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].

public class Solution {    /**     * @param nums1 an integer array     * @param nums2 an integer array     * @return an integer array     */    public int[] intersection(int[] nums1, int[] nums2) {        // Write your code here        if(nums1==null||nums2==null){return null;}HashMap<Integer, Integer> map1=new HashMap<Integer, Integer>();HashMap<Integer, Integer> map2=new HashMap<Integer, Integer>();List<Integer> result=new ArrayList<Integer>();for(int i=0;i<nums1.length;i++){if(map1.containsKey(nums1[i])){map1.put(nums1[i], map1.get(nums1[i])+1);}else{map1.put(nums1[i], 1);}}for(int i=0;i<nums2.length;i++){if(map2.containsKey(nums2[i])){map2.put(nums2[i], map2.get(nums2[i])+1);}else{map2.put(nums2[i], 1);}}Set<Integer> set1=map1.keySet();Iterator<Integer> it1=set1.iterator();while(it1.hasNext()){int temp=it1.next();if(map2.containsKey(temp)){int n=Math.min(map2.get(temp), map1.get(temp));for(int i=0;i<n;i++){result.add(temp);}}}int[] nums=new int[result.size()];for(int i=0;i<result.size();i++){nums[i]=result.get(i);}return nums;    }}