华为OD机试之二元组个数(Java源码)

news2024/11/24 18:25:53

二元组个数

题目描述

给定两个数组a,b,若a[i] == b[j] 则称 [i, j] 为一个**二元组**,求在给定的两个数组中,二元组的个数。

输入描述

第一行输入 m
第二行输入m个数,表示第一个数组

第三行输入 n
第四行输入n个数,表示第二个数组

输出描述

二元组个数。

用例

输入4
1 2 3 4
1
1
输出1
说明二元组个数为 1个
输入6
1 1 2 2 4 5
3
2 2 4
输出5
说明二元组个数为 5 个。

源码和解析
解析:

其实这个题目重在理解,如果理解了题意了你就好做了。
小编在做这个题时,就进入了误区
当输入为
6
1 1 2 2 4 5
3
2 2 4
输出5时 我天真的以为组合是这样的
其中a[]={1,1,2,2,4,5} b={2,2,4}
我以为的组合 a数组出一个2 b数组出一个2 得到 [2,0] [3,1] a数组出一个4 b数组出1个4 得到[4,2] 然后a出两个连续2 b出两个连续2 得到[ [2,3],[0,1] ] a出224 b出224 得到[[2,3,4],[0,1,2]]数了一下5个 和答案一致


然而真实的组合是这样的
[2,0] [2,1] [3,0] [3,1] [4,2] 没错就是这么简单
注意,题目只要求每个数组出一个数字即可。不要把题想得那么复杂,这个题我还特意咨询了大佬 伏城之外 忽然觉得自己好憨


既然分析懂了题目,就稍微好做些了。
1.因为是要a数组中的某一个a[i]等于b数组中的某一个b[j] 所以a中的一个数a[i]可以匹配B中的值相同的那个数多个就如a[2]就能匹配b[0]和b[1]
2.所以只要统计出a在b中出现的那些数及其个数 以及这些数在a中出现的个数即可运用简单方法求解出来,就不需要用双层for循环或双指针求解。例如a中2出现2次 所以第一个2在b数组中匹配了2个,自然而然第二个2也是匹配2个 最后就是分别求和相加
3.在a中 有2和4 出现在了b中,因此在b中2和4出现的次数为
{2:2,4:1}
在a中,2和4自己出现的次数为
{2:2,4:1}
所以综合求解为2*2+1*1次

示例代码:

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

上述代码运行示意图:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/589054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 安装、卸载docker(一)

安装流程 # 1.设置镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 2.安装、更新yum软件包索引 // 安装yum&#xff0c;docker需要的安装包 yum install -y yum-utils // 更新yum软件包索引 yum makecache fast# …

pmp新手报名需要的步骤

球很多大中型企业&#xff0c;如华为、腾讯、字节、联想等&#xff0c;招聘项目管理相关人员时&#xff0c;都会把持有PMP证书当作必选或优选的招聘条件。 那么PMP的报考条件是什么呢&#xff1f;以下是PMI官网发布的PMP考试报考条件&#xff1a; 一、报名考生必须具备35小时…

不到一分钟,即刻拥有这 22 款插件主题

开源 API 管理工具 Postcat 的插件广场最近上新了插件主题&#xff0c;看了看&#xff0c;真的有几款我很喜欢。可能会有朋友有跟我一样的疑问&#xff0c;如何拥有这些好玩的插件主题。 第一步当然是找到 Postcat &#xff0c;安装 Postcat ! 找到插件广场 浏览并选择喜欢的主…

云原生之部署Docker轻量级管理面板EasyDockerWeb

云原生之部署Docker轻量级管理面板EasyDockerWeb 一、EasyDockerWeb介绍1. EasyDockerWeb简介2. 环境要求3. EasyDockerWeb特点 二、本地环境介绍1. 本地环境规划2. 本次实践介绍 三、本地环境检查1.检查Docker服务状态2. 检查Docker版本 四、下载EasyDockerWeb镜像五、部署Eas…

25岁转行做软件测试1年多了,写给还在迷茫的测试圈朋友

相比开发以后的职业生涯&#xff1b;我更看好软件测试的未来。 其次具有开发经验。对软件测试会有相当大的帮助&#xff0c;前面学了测试基础工具后&#xff0c;后期自动化提升会更快。这样才能更好的胜任软件测试工作。 最重要的是测试不是青春饭&#xff0c;和软件开发相比…

VUE 3.0 -- 直播推拉流、流视频播放

&#x1f6f4;&#x1f6f4;前言&#xff1a; 该 Demo 基于 OBS推流 Nginx Vue 3.0 Nplayer.js hls.js &#xff0c;目的只是实现流媒体播放&#xff0c;以及简易推拉流直播。 文章目录 前端组件 NPlayer.js安装 nplayer.js 流视频播放页面元素初始化播放器清晰度控件样式…

Linux中与命名空间相关的内核数据结构

【摘要】本文详细讲述了在Linux内核中与命名空间概念相关的内核数据结构及其内在联系。 十、命名空间(namespace)相关数据结构 Linux内核通过数据结构之间互相的连接关系&#xff0c;形成了一套虚拟的命名空间的虚拟化概念。 10.1 struct pid_namespace \linux-2.6.32.63\i…

关于数据科学的文本分析案例

在本文中&#xff0c;我们尝试通过进行一些文本挖掘来发现数据科学相关概念。我们将从一篇关于数据科学的文本开始&#xff0c;从中提取关键字&#xff0c;然后尝试可视化结果。 作为文本&#xff0c;将使用维基百科的数据科学页面&#xff1a; url https://en.wikipedia.org…

Java 高级应用-多线程-(二)线程安全问题及解决

当我们使用多个线程访问同一资源&#xff08;可以是同一个变量、同一个文件、同一条 记录等&#xff09;的时候&#xff0c;若多个线程只有读操作&#xff0c;那么不会发生线程安全问题。但是如 果多个线程中对资源有读和写的操作&#xff0c;就容易出现线程安全问题。 5.1 同…

四段论提问让ChatGPT更懂你心!

用户故事是描述客户需求的方法&#xff0c;通常记为四段论的格式&#xff1a; 角色&#xff0d;功能&#xff0d;目的&#xff0d;验收标准。 如&#xff1a; 作为一个家庭主妇&#xff0c;我需要一个30平方米的餐厅&#xff0c;用以招待10位客人聚餐。 我希望这个餐厅&…

Spring/SpringBoot与RabbitMQ整合

具体代码 依赖&#xff1a; <dependencies><!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.0</v…

定薪17K*15,阿里测开岗上岸面经分享....

先简单介绍一下我自己吧&#xff0c;等会大家以为我是什么学历狂人&#xff0c;技术大牛&#xff0c;我毕业于广东一个普通本科院校&#xff0c;绝对不是什么双一流大学&#xff0c;大家不要有距离感&#xff0c;这也是我为什么来分享的原因&#xff0c;因为我觉得我这段经验还…

github SSH 生成和使用(详细)

通过ssh连接github&#xff0c;可以有效的提升安全性 1.设置位置 2.生成ssh密钥&#xff08;windows&#xff09; 打开git bash&#xff0c;输入以下命名&#xff0c;把your_emailexample.com换成自己的github账号 ssh-keygen -t rsa -b 4096 -C "your_emailexample.co…

【计算几何】判断多边形边界顺逆时针 C++代码实现

文章目录 一、多边形边界顺序二、数学原理2.1 Green公式2.2 鞋带公式 三、代码实现 一、多边形边界顺序 多边形可以由一个点集 { v 1 , v 2 , . . . , v n } \{v_1,v_2,...,v_n\} {v1​,v2​,...,vn​} 表示&#xff0c;构成多边形的点集确定&#xff0c;多边形边界的顺序也就…

InsCode AI 创作助手围绕《程序员应如何应付AI带来的影响》为主题

InsCode AI 创作助手围绕《程序员应如何应付AI带来的影响》为主题 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&a…

Fabric模块功能介绍(一)

主要有5个模块,分别是peer、orderer、cryptogen、configtxgen、configtxlator 模块功能peer主节点模块&#xff0c;负责存储区块链数据、运行维护链码orderer交易打包&#xff0c;排序模块cryptogen组织和证书生成模块configtxgen区块和交易生成模块configtxlator区块和交易解…

【小程序开发日记】django学习笔记4

在没有学完django的情况下匆匆上阵。。。 这次的任务主要是管理数据库并实现浏览的功能。 首先介绍一下微信小程序连接后端的接口&#xff1a;wx.request 基本上输入后会比较经常使用的就是这几个参数。 接下来明确一下这次的工作&#xff1a; 我需要管理两个数据库&#x…

Python - numpy basic

目录 数组array的创建 1 通过list创建array 2 通过list创建二维数组 3 通过arange函数创建 等差数组 4 通过zeros函数创建 零矩阵 5 通过eyes函数创建 单位矩阵 数组array的访问 1 访问形状/元素个数/数据类型 2 访问一维数组的位置/范围 3 访问二维数组的位置/范围 4…

Unity Emisson 自发光属性全局照明

给想要自发光的物体&#xff0c;选择Unity自带Standard Shader。然后勾选Emisson 如下图&#xff1a; 属性&#xff1a; Color指定发光的颜色和强度。单击 Color 框可打开 HDR Color 拾色器。在此处可以更改光照的颜色和发光的强度 (Intensity)。要指定材质的哪些区域发光&…

蓝库云:让销售人员搭配客服工单系统,已成销售企业必备的组合

让销售人员搭配客服工单系统&#xff0c;已成了众多销售企业必备的组合&#xff0c;这不但可以大大提高客户满意度和转化率&#xff0c;还有效跟踪客户及时收到客户的反馈&#xff0c;从而进一步优化产品及策略。站在企业的角度来说企业也可以可以进行数据分析和优化&#xff0…