首页 > 其他分享 >7-9 找出不是两个数组共有的元素

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

时间:2024-03-09 20:22:25浏览次数:32  
标签:找出 isSame int 元素 ++ 数组 n1 diff n2

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

分数 10
作者 张彤彧
单位 浙江大学

给定两个整型数组,本题要求找出不是两者共有的元素。

输入格式:

输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。

输出格式:

在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

输入样例:

10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1

输出样例:

3 5 -15 6 4 1

参考代码

#include<iostream>
#include<string>
#include<string.h>
#include <iomanip>
using namespace std;

int isReapeat(int * diff, int n,int m)
{
	for (int i = 0; i < m; i++)
	{
		if (n == diff[i])
		{
			return 1;
		}
	}
	return 0;
}

int main()
{
	int n1, n2;
	int a[30], b[30];
	//输入
	cin >> n1;
	for (int i = 0; i < n1; i++)
	{
		cin >> a[i];
	}
	cin >> n2;
	for (int i = 0; i < n2; i++)
	{
		cin >> b[i];
	}

	//search
	int diff[30];
	int m = 0;

	//step1:从第一行的角度搜索
	for (int i = 0; i < n1; i++)
	{
		int isSame = 0;
		for (int j = 0; j < n2; j++)
		{
			if (a[i] == b[j])
			{
				isSame = 1;
				break;
			}
		}
		if (isSame == 0 && isReapeat( diff, a[i], m) == 0)//判断数字是否重复
		{
			diff[m] = a[i];
			m++;
		}
	}
	//step2:从第二行的角度搜索(不然会漏掉第二行有而第一行没有的)(拿step1简单改一下)
	for (int i = 0; i < n2; i++)
	{
		int isSame = 0;
		for (int j = 0; j < n1; j++)
		{
			if (b[i] == a[j])
			{
				isSame = 1;
				break;
			}
		}
		if (isSame == 0 && isReapeat(diff, b[i], m) == 0)//判断数字是否重复
		{
			diff[m] = b[i];
			m++;
		}
	}
	//输出
	cout << diff[0];
	for (int i = 1; i < m; i++)
	{
		cout << " " << diff[i];
	}
	return 0;
}

标签:找出,isSame,int,元素,++,数组,n1,diff,n2
From: https://www.cnblogs.com/yesno233233/p/18063230

相关文章

  • 代码随想录算法训练营第四十一天|01背包问题, 01背包问题—— 滚动数组,分割等和子集
    01背包问题,你该了解这些! 题目链接:46.携带研究材料(第六期模拟笔试)(kamacoder.com)思路:第一次遇到背包问题,好好记住吧。代码随想录(programmercarl.com)#include<bits/stdc++.h>usingnamespacestd;intmain(){intm,n;cin>>m>>n;vector<int>z(m);vec......
  • dataset 判断整列是否有重复,找出重复数据
    DataTabledt=ds.Tables[0];DataViewdv=newDataView(dt);if(dv.Count!=dv.ToTable(true,jsonColumnNameNo).Rows.Count){......
  • 成品直播源码,大屏元素分辨率适配的常用方案
    越来越多的客户喜欢在成品直播源码中添加一个或者多个可视化大屏,用来集中的展现数据变化、位置变化等等。作为程序员在完成该需求时,经常会有这样的问题:我有一个大屏的模板,但是用户的浏览器分辨率不够,或者有的有书签栏有的没有书签栏,更或者是有的全屏了有的只是小窗口,这样就有了代......
  • 解决easyexcel合并单元格数组求和重复问题
    背景EasyExcel(根据条件动态合并单元格的重复数据))_Violet-CSDN博客_easyexcel动态合并单元格现有的订单导出是使用的easyExcel完成的.对于相同单元格的合并是自定义的策略,问题是对于重复单元格的值会合并,表格求和时值会虚高现需要对合并格做修改,做到值只有一个。思路sheet合并......
  • leedcode-移除链表元素
    自己写的:#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defremoveElements(self,head:Optional[ListNode],val):#初始化一个......
  • Advanced .Net Debugging 3:基本调试任务(对象检查:内存、值类型、引用类型、数组和异常
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第四篇文章。今天这篇文章的标题虽然叫做“基本调试任务”,但是这章的内容还是挺多的。由于内容太多,故原书的第三章内容我分两篇文章来写。上一篇我们了解了一些调试技巧,比如:单步调试、下断点、过程调试等,这篇文章主......
  • abc331E 两数组元素间带限制的最大和
    题面:给定大小为n的数组A,大小为m的数组B,那么共有n*m个元素和。现给出L对禁用下标(a,b),找一对不在L中的下标(i,j),使用A[i]+B[j]最大,求该最大值。范围:n,m<=1e5;1<=L<=min(1e5,nm-1)思路:先对A和B按从大到小排序,然后让i指向A起始位置,j指向B起始位置,将对应的四元组(sum,i,j,flag)加入......
  • C语言基础-1、数组
    一、数组数组可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间数组是长度固定的数据结构,用来存放指定的类型数据一个数组里可以有很多个数据所有的数据的类型都是相同的二、定义数组<类型>变量名称[元素数量];intgrades[100];doubleweight[20];元素......
  • 和为K的子数组
    题目:使用前缀和的方法可以解决这个问题,因为我们需要找到和为k的连续子数组的个数。通过计算前缀和,我们可以将问题转化为求解两个前缀和之差等于k的情况。假设数组的前缀和数组为prefixSum,其中prefixSum[i]表示从数组起始位置到第i个位置的元素之和。那么对于任意的两个下标i和j......
  • 【LeetCode】977. 有序数组的平方
    题目:977.有序数组的平方解题思路:分析题目,左侧负数的平方可能超过右侧正数的平方,所以考虑使用双指针法,从左右向中间遍历最大值将遍历结果放入新创建的数组中,返回数组由于该问题的传入数组大小不确定,故只能使用动态数组创建方法,malloc方法导入<math.h>,使用abs绝对值比较函数,......