数组去重问题

对于数组去重问题,可以分为两大方法:

一为不排序的去重

二为排序后的去重

排序后的去重又可以分为

1.利用函数unique实现将重复元素移至后面,cout出前面的元素,以达效果

2.不适用函数,思想:当后面与前面元素不同时,才去cout

tip:不要总想着去用一个新的数组去接收,完全可以在这个已经有的数组中根据某些特定的条件,来cout出想要的值


几个的代码:

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int M = 0;
	int N = 0;
	int i = 0;
	int a = 0;
	cin >> M >> N;
	int arr1[100];
	int arr2[100];
	int arr3[200];
	for (i = 0; i < M; i++)
	{
		cin >> arr1[i];
	}
	for (i = 0; i < N; i++)
	{
		cin >> arr2[i];
	}
	for (i = 0;i < M ; i++)
	{
		arr3[i] = arr1[i];
	}
	for (i = 0; i < N; i++)
	{
		arr3[M+i] = arr2[i];
	}
	for (i = 0; i < (M + N); i++)
	{
		sort(arr3, arr3 + M + N);
	}
	a = unique(arr3, arr3 + M + N) - arr3;
	for (i = 0; i < a-1; i++)
	{
		cout << arr3[i] << ' ';
	}
	cout << arr3[a-1];

	return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int M = 0;
	int N = 0;
	int i = 0;
	int a = 0;
	cin >> M >> N;
	int arr1[100];
	int arr2[100];
	int arr3[200];
	for (i = 0; i < M; i++)
	{
		cin >> arr1[i];
	}
	for (i = 0; i < N; i++)
	{
		cin >> arr2[i];
	}
	for (i = 0; i < M; i++)
	{
		arr3[i] = arr1[i];
	}
	for (i = 0; i < N; i++)
	{
		arr3[M + i] = arr2[i];
	}
	for (i = 0; i < (M + N); i++)
	{
		sort(arr3, arr3 + M + N);
	}
	cout << arr3[0];
	for (i = 1; i < (M + N); i++)
	{
		if (arr3[i] != arr3[i - 1])
		{
			cout << ' ' << arr3[i];
		}
	}


	return 0;
}

过了n多天的补充方法:(以空间换时间)

题目描述:

 

基本思路:遍历两次数组,打印下标

 遵循C99时:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值