老师,你好。 第二个问题我写了代码之后的有点疑惑。题目要求输出结果每个元素的出现的次数在两个数组中出现的次数一致。
我给出两个数组,我的输出答案是 【2 2 1 8 8 1】 而第一个数组1出现1次 第二个数组1出现3次。所以理论答案应该 【2 2 8 8】吧.
int[] num1={2,8,2,6,1,8};
int[] num2={2,2,1,8,9,8,1,1};
public static int[] interSectionForList(int[] num1, int[] num2){
TreeMap<Integer , Integer> treeMap = new TreeMap<>();
for(int num: num1){
if(!treeMap.containsKey(num))
treeMap.put(num, 1);
else
treeMap.put(num, treeMap.get(num)+1);
}
ArrayList arrayList = new ArrayList<>();
for(int num: num2){
if (treeMap.containsKey(num)) {
arrayList.add(num);
treeMap.put(num, treeMap.get(num)-1);
if(treeMap.get(num)==0)
treeMap.remove(num);
}
}
int [] resNum = new int[arrayList.size()];
for(int i=0 ; i<arrayList.size(); i++)
resNum[i]=arrayList.get(i);
return resNum;
}