【基础算法】[PTA]-找出不是两个数组共有的元素

这篇具有很好参考价值的文章主要介绍了【基础算法】[PTA]-找出不是两个数组共有的元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

找出不是两个数组共有的元素,数据结构与算法,算法,PTA


找出不是两个数组共有的元素

题目描述:

找出不是两个数组共有的元素,数据结构与算法,算法,PTA
找出不是两个数组共有的元素,数据结构与算法,算法,PTA

解题思路:

  • 【整体思路】:在两个整型数组中,找出不是两者共有的元素,意思就是既要在第一个数组中找出第二个数组中没有出现的元素,也要在第二个数组中找出第一个数组中没有出现的元素。所以这里可以每个数组做一次主体,将主体数组中每一个元素在另一个数组中走一遍,如果没有与其相等的元素,就入入一个临时数组(另外需要的数组,用来存放在两个整型数组中,不是两者共有的元素),直到主体数组遍历完再将另一个数组作为主体数组走一遍。当两个数组都走完后,临时数组里面的元素就是想要的元素,但是,这里可能会有重复的元素(假如一个数组中有两个3,而这个3在另外一个数组中没有出现,那么这个3在临时数组中就有两个),所以最后在打印临时数组每个元素的时候需要往前寻找看有没有相同的元素,如果有就不用打印了,因为前面出现的已经打印过了。

  • 据此,这里可以用两个循环分别来找出在这个数组中出现而另一个数组没有出现的元素。

  • 两个循环每一个循环都是嵌套了一层循环,就是将当前数组的每一个元素在另一个数组中走一遍。

代码实现:

#include <stdio.h>

int main()
{
	// 目标数组 
	int a1[20] = { 0 };
	// 目标数组
	int a2[20] = { 0 };
	// 临时数组
	int a3[20] = { 0 };
	
	// 分别表示两个数组的长度(元素个数)
	int n, m;
	
	// 先输入的表示 a1 的长度,然后输入目标数组 a1 的每个元素
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a1[i]);
	}
	
	// 先输入的表示 a2 的长度,然后输入目标数组 a2 的每个元素
	scanf("%d", &m);
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &a2[i]);
	}
	
	// k 为临时数组的索引
	int k = 0;
	for (int i = 0; i < n; i++)
	{
		// flag表示假设当前元素在另一个数组中不出现
		int flag = 1;

		for (int j = 0; j < m; j++)
		{
			// 如果找到相同的元素,就将 flag 置为 0 ,假设不成立
			if (a1[i] == a2[j])
			{
				flag = 0;
			}
		}
		
		// 如果假设成功,就将当前元素放入临时数组
		if (flag) a3[k ++] = a1[i];
	}

	for (int i = 0; i < m; i++)
	{
		int flag = 1;

		for (int j = 0; j < n; j++)
		{
			if (a2[i] == a1[j])
			{
				flag = 0;
			}
		}

		if (flag) a3[k++] = a2[i];
	}
	
	// 打印临时数组的数据,重复的只打印一次
	for (int i = 0; i < k; i++)
	{
		int flag = 1;
		
		// 向前寻找看有没有相同元素
		for (int j = 0; j < i; j++)
		{
			// 有就将 flag 置为 0 ,后面的 if 就不进去 
			if (a3[i] == a3[j])
			{
				flag = 0;
			}
		}
		
		// 如果 flag 为 1 ,说明当前的元素没有重复,进入 if
		if (flag)
		{
			// 控制输入格式,题目会检查
			if (!i)
			{
				// 如果是第一个元素就不打印空格
				printf("%d", a3[i]);
			}
			else
			{
				// 将空格往前打印,因为最后不能有空格
				printf(" %d", a3[i]);
			}
		}
	}

	return 0;
}

感谢阅读本小白的博客,错误的地方请严厉指出噢~

找出不是两个数组共有的元素,数据结构与算法,算法,PTA文章来源地址https://www.toymoban.com/news/detail-757956.html

到了这里,关于【基础算法】[PTA]-找出不是两个数组共有的元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C/C++数据结构---在一个数组中实现两个堆栈(PTA)

    个人主页 仍有未知等待探索_数据结构,C语言疑难,小项目-CSDN博客 专题分栏---数据结构 数据结构_仍有未知等待探索的博客-CSDN博客 目录 一、前言         二、题目 要求 函数接口定义 裁判测试程序样例 输入样例  输出样例  三、分析  1.栈的特点 2.题目分析  3.栈的创建

    2024年02月08日
    浏览(30)
  • 华为OD机试真题-找出两个整数数组中同时出现的整数-2023年OD统一考试(B卷)

    题目描述: 现有两个整数数组,需要你找出两个数组中同时出现的整数,并按照如下要求输出: 1、有同时出现的整数时,先按照同时出现次数(整数在两个数组中都出现并且出现次数较少的那个)进行归类,然后按照出现次数从小到大依次按行输出。 2、没有同时出现的整

    2024年02月07日
    浏览(24)
  • PTA 6-8 用指针操作数组输入输出元素(指针做形参)

    从键盘输入n(n=10),n代表数组元素个数,对数组进行所有元素的输入输出,输入输出功能在fun函数中实现,主函数不要动,要求用指针法操作数组,不要用下标法。 函数接口定义: 裁判测试程序样例 输入格式: 先输入数组的元素个数,然后从键盘输入元素 输出格式: 输出数

    2024年04月10日
    浏览(22)
  • 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。(哈希法)

    思路: 当题意中需要判断某个元素是否出现过,或者某个元素是否在这个集合里出现过。 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组

    2024年02月08日
    浏览(25)
  • Python 算法基础篇之数组和列表:创建、访问、添加和删除元素

    在算法和数据结构中,数组和列表是常见的数据结构,用于存储和操作一组数据。在 Python

    2024年02月16日
    浏览(28)
  • 27.移除元素+88.合并两个有序数组

    目录 一、移除元素 (一)题目 (二)代码  二、合并两个有序数组 (一)题目 (二)代码 27. 移除元素 - 力扣(LeetCode)     88. 合并两个有序数组 - 力扣(LeetCode)    用双指针  

    2023年04月14日
    浏览(28)
  • js 过滤两个数组中的相同元素

    encodeComponent() 不会对 ASCII 数字 或者   - _ . ! ~ * \\\' ( )   编码 。只对 #¥%@…… ....等编码 防止 服务端解析 这些地址 无法识别  相反 decodeComponent() 解码  js中encodeURIComponent函数的使用,加码解码_玉米妈妈-momoxifei的博客-CSDN博客 js中encodeURIComponent函数的使用,加码解码 https:

    2024年02月15日
    浏览(23)
  • 写一个方法实现数组元素每两个元素加一个换行,并进行文件导出

    源数据: 输出的数据如下: 我们可以手写一个方法,方法如下: 然后再写一个数据导出方法 扩展链接:Vue 项目开发将数据下载导出到本地的方法

    2024年02月06日
    浏览(35)
  • Leetcode24-找到两个数组中的公共元素(2956)

    给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们分别含有 n 和 m 个元素。 请你计算以下两个数值: 统计 0 = i n 中的下标 i ,满足 nums1[i] 在 nums2 中 至少 出现了一次。 统计 0 = i m 中的下标 i ,满足 nums2[i] 在 nums1 中 至少 出现了一次。 请你返回一个长度为 2 的整数数组

    2024年01月20日
    浏览(30)
  • 【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组

    🧑‍💻作者: @情话0.0 📝专栏:《LeetCode》 🔖题目链接:移除元素、删除有序数组中的重复项、合并两个有序数组 给你一个数组 nums 和一个值 val,你需要 原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空

    2023年04月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包