LeetCode350. 两个数组的交集 II(java)

题目:

给定两个数组,编写一个函数来计算它们的交集。
LeetCode350. 两个数组的交集 II(java)_第1张图片

示例:
LeetCode350. 两个数组的交集 II(java)_第2张图片
代码:

  • 解法一
//利用映射实现
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        TreeMap map=new TreeMap();
        for(int nums:nums1){	//nums1的键,值放入map中
            if(!map.containsKey(nums)){	//不存在时,值为1
                map.put(nums,1);
            }else{	//存在时 值为当前值+1
                map.put(nums,map.get(nums)+1);
            }
        }
        ArrayList list=new ArrayList();
        for(int nums:nums2){
            if(map.containsKey(nums)){	//map中有交集元素时
                list.add(nums);	//将元素加入到list中
                map.put(nums,map.get(nums)-1);  //将其值-1
                if(map.get(nums)==0){   //值为0 则map中没有这个键 删除键
                    map.remove(nums);
                }
            }
        }
        int[] res=new int[list.size()];
        for(int i=0;i
  • 别人的代码
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        int i=0,j=0;
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int minle=nums1.length nums2[j]){	//因为数组是排序过的 j++
                    j++;
                }
                else{	//排过序 i--
                    i++;
                }
            }
            
        }
        return Arrays.copyOfRange(res,0,k); 
    }
}

你可能感兴趣的:(LeetCode刷题)