LintCode - 两数组的交 II(普通)

字数 47阅读 43

版权声明:本文为博主原创文章,未经博主允许不得转载。

难度:容易
要求:

计算两个数组的交

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

样例

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

思路

/**
     * @param nums1 an integer array
     * @param nums2 an integer array
     * @return an integer array
     */
    public int[] intersection(int[] nums1, int[] nums2) {
        if(nums1 == null || nums2 == null ){
            return null;
        }
        
        HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i = 0; i < nums1.length; i++){
            int value = nums1[i];
            if(map.containsKey(value)){
                map.put(value,map.get(value) + 1);
            }else{
                map.put(value,1);
            }
        }
        
        List<Integer> list = new ArrayList<Integer>();
        
        for(int i = 0; i < nums2.length; i++){
            int value = nums2[i];
            if(map.containsKey(value) && map.get(value) > 0){
                list.add(value);
                map.put(value,map.get(value) - 1);
            }
        }
        
        int[] result = new int[list.size()];
        int index = 0;
        for(Integer i : list){
            result[index++] = i;
        }
        return result;
    }

推荐阅读更多精彩内容