二元组个数
题目描述
输入描述
输出描述
用例
源码和解析
解析:
示例代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class T37 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int num=Integer.parseInt(scanner.nextLine());
String input1[]=scanner.nextLine().split(" ");
List<Integer> num1List=new ArrayList<Integer>();
for(int i=0;i<num;i++){
num1List.add(Integer.parseInt(input1[i]));
}
int num2=Integer.parseInt(scanner.nextLine());
String input2[]=scanner.nextLine().split(" ");
List<Integer> num2List=new ArrayList<Integer>();
for(int i=0;i<num2;i++){
num2List.add(Integer.parseInt(input2[i]));
}
Map<Integer, Integer> map1=new HashMap<Integer, Integer>();
Map<Integer, Integer> map2=new HashMap<Integer, Integer>();
for(int n:num1List){
//对方的数 在自己的中出现过几次map1
if(num2List.contains(n)){
if(map1.containsKey(n)){
map1.put(n, map1.get(n)+1);
}else{
map1.put(n, 1);
int count=0;//自己在对方的列表中出现的次数
for(int j:num2List){
if(j==n){
count++;
}
}
map2.put(n, count);
}
}
}
System.out.println(map1);
System.out.println(map2);
Set<Integer> keySet = map1.keySet();
Iterator<Integer> it=keySet.iterator();
int res=0;
while(it.hasNext()){
int key=it.next();
res+=map1.get(key)*map2.get(key);
}
System.out.println("结果为:"+res);
}
}
上述代码运行示意图: