大明子又称小码哥

大明子又称小码哥

二元组个数

题目描述

输入描述

输出描述

用例

源码和解析
解析:

示例代码:

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);
	}
}

上述代码运行示意图:
华为OD机试之二元组个数(Java源码)-LMLPHP
华为OD机试之二元组个数(Java源码)-LMLPHP

05-31 13:33