两个数组的交集 II
整理思路:理解题意。题目要你做的很简单。
package ccf;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class num_8 {
public static void main(String[] args) {
int []nums1 = {4, 9, 5, 4};
int []nums2 = {9, 4, 9, 8, 4};
System.out.println(intersect2(nums1, nums2));
}
//使用Map,数组作为键值key,计数器作为value
public static int[] intersect2(int[] nums1, int[] nums2) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();//建立整型字典
for(int i=0;i<nums1.length;i++) {
Integer val=map.get(nums1[i]);//获得字典内键对应为num1的值
map.put(nums1[i], (val==null)?1:++val);
}
System.out.println(map);
ArrayList<Integer> al = new ArrayList<Integer>();
for(int i=0,val;i<nums2.length;i++) {
if(map.containsKey(nums2[i]) && (val=map.get(nums2[i]))>0) {
al.add(nums2[i]);
map.put(nums2[i], --val);
}
}
System.out.println(map);
int[] in = new int[al.size()];
int e=0;
for(int i:al)
in[e++] = i;
System.out.println(Arrays.toString(in));
return in;
}
}