请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于7-9的leetcode第二个问题的疑问

老师,你好。 第二个问题我写了代码之后的有点疑惑。题目要求输出结果每个元素的出现的次数在两个数组中出现的次数一致。
我给出两个数组,我的输出答案是 【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;
}

正在回答 回答被采纳积分+3

插入代码

2回答

草鱼禾 2021-10-15 15:54:49

我理解的也是,必须要求一个元素在两个数组中出现的次数一致才认为是有交集,比如数组A:[1, 2, 1]、数组B:[2, 2],数组C:[1, 2, 2]。A和B的结果应该是[](因为2这个元素在数组A中只出现了一次,在数组B中出现了两次),而B和C的结果是[2, 2],是不是这个题目有歧义?

0 回复 有任何疑惑可以回复我~
liuyubobobo 2020-03-02 07:33:02

我没有特别理解你的问题?


第一个数组中 1 出现了 1 次;第二个数组中 1 出现了 3 次。交集里,应该有 1 个 1。


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 催夜凉风 #1
    我看视频里那个 「题目要求输出结果每个元素的出现的次数在两个数组中出现的次数一致」 而我的第一个数组1出现1次 第二个数组1出现3次,这样不就违背了题目的要求了吗? 不知道我表达清楚了没有
    回复 有任何疑惑可以回复我~ 2020-03-03 16:05:52
  • liuyubobobo 回复 提问者 催夜凉风 #2
    抱歉,我还是没有理解你的问题。我看了一遍你的代码,你的基本逻辑是正确的。对于你的测试用例:{2,8,2,6,1,8} 和 {2,2,1,8,9,8,1,1},输出结果应该是 {2, 2, 8, 8, 1}。(有两个2,两个8,一个1)。
    回复 有任何疑惑可以回复我~ 2020-03-04 03:55:10
  • 提问者 催夜凉风 回复 liuyubobobo #3
    好的,谢谢老师,对了就行了。
    回复 有任何疑惑可以回复我~ 2020-03-06 15:34:54
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号