解题思路
map
记录每一个元素出现的次数,使用map来记录nums1每一个元素出现的次数,之后将nums2中的元素与map进行比较
public int[] intersect(int[] nums1, int[] nums2) {//map用来保存nums1中每个元素出现的次数Map<Integer,Integer> map = new HashMap<>();for(int i:nums1){//先获取map中的值 如果没有设为0int time = map.getOrDefault(i,0);//累加放回mapmap.put(i,time+1);}//记录交集的个数int index = 0;for(int i:nums2){//如果map中包含该元素并且出现次数大于等于1 记录下来if(map.containsKey(i)&&map.get(i)>=1){//使用nums1数组保存交集nums1[index++] = i;//说明已经被用掉了一个 需要减1map.put(i,map.get(i)-1);}}//返回nums1的一个copyreturn Arrays.copyOfRange(nums1, 0,index);}
