首页 > 其他分享 >对数组去重的常见方法

对数组去重的常见方法

时间:2023-05-24 20:46:04浏览次数:30  
标签:set cout int 常见 cin ++ 1e5 数组 方法

1. 排序 + 去重

方法一:unique + sort

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;

int n;
int a[N];

int main()
{
	cin >> n;
	for (int i = 0; i < n; i ++ ) cin >> a[i];
	
	//排序 + 去重 
	sort(a, a + n);
	n = unique(a, a + n) - a;
	
	for (int i = 0; i < n; i ++ ) cout << a[i] << " " << endl;
	
	return 0;
}

方法二:set

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;

int n;
int a[N];

int main()
{
	cin >> n;
	for (int i = 0; i < n; i ++ ) cin >> a[i];
	
	//排序 + 去重
	set<int> s;
	for (int i = 0; i < n; i ++ ) s.insert(a[i]);
	
	for (auto x : s) cout << x << ' ';
	
	return 0;
}

2. 保序 + 去重

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;

int n;
int a[N];

int main()
{
	cin >> n;
	for (int i = 0; i < n; i ++ ) cin >> a[i];
	
	//保序 + 去重  
	unordered_set<int> s;
	int k = 0;
	for (int i = 0; i < n; i ++ )
		if (s.insert(a[i]).second)
			a[k ++ ] = a[i];
	n = k;
	
	for (int i = 0; i < n; i ++ ) cout << a[i] << ' ';
	
	return 0;
}

标签:set,cout,int,常见,cin,++,1e5,数组,方法
From: https://www.cnblogs.com/lhycoder/p/17429438.html

相关文章

  • window 10 安装node.js时遇到2502 2503错误解决方法
    最近想安装一下node.js,可是在安装过程中出现了2503和2502的问题,如下图:不过除了这些代码外,微软并没有提供解决办法。这一问题出现在Win7/Win8.1/Win10中,原因就是C:\Windows\Temp文件夹NTFS权限错误。为了能够让WindowsInstaller操作正确,当前账户需要有Temp文件夹完全管理员权......
  • 【异常】This application has no explicit mapping for /error, so you are seeing t
    本文目录一、错误提示二、错误原因2.1原因一:启动类的位置不对2.2原因二:控制器的URL路径书写问题 2.3原因三:配置文件中视图解析器的配置问题三、解决方案3.1解决方案一3.2解决方案二3.3解决方案三背景:使用springboot+vue构建的微信点餐系统一、错误提示最近在做一个项目,......
  • js中判断数组的几种方法
    vara=[];基于instanceofainstanceofArray;基于constructora.constructor===Array;基于Object.prototype.isPrototypeOf()Array.prototype.isProtypeOf(a);基于getPrototypeOfObject.getPrototypeOf(a)===Array.prototype;基于Object.prototype......
  • 统计得分小于K的子数组数目
    一个数组的分数定义为数组之和乘以数组的长度1.前缀和+二分classSolution{public:longlongcountSubarrays(vector<int>&nums,longlongk){//注意是正整数数组intn=nums.size();longlongres=0;vector<longlong>pr......
  • Pytest - pytest 命令(1) - 命令执行方法
    命令执行方法讲解下pytest分别在Windows,Linux,Pycharm中,执行pytest的方法;追加的参数可以参考:Pytest-pytest命令(2)-命令参数及含义Pytest-pytest命令(3)-常用命令的使用Windows执行Windows下执行pytest测试脚本没什么难度,在用例的目录下打开cmd窗口......
  • Vue中this.$nextTick()的理解与使用方法
    https://www.jb51.net/article/238332.htmhttps://blog.csdn.net/lzfengquan/article/details/118933093......
  • 常见性能指标
    1、性能指标分类系统性能指标资源性能指标中间件指标数据库指标稳定性指标可扩展性指标可靠性指标2、系统性能指标响应时间系统处理能力吞吐量并发用户数错误率2.1响应时间ResponseTime简称RT,是指系统对请求作出响应的时间(处理请求的时间);不同的功能的响应时间也不尽相同,所......
  • 【算法学习前置】了解JS中的数组
    介绍此篇属于前端算法入门系列的第一篇,主要介绍常用的数组方法、字符串方法、遍历方法、高阶函数、正则表达式以及相关数学知识。文章主要包含以下内容:数组常用方法字符串常用方法常用遍历方法&高阶函数常用正则表达式数学知识一、数组常用方法push()在尾部追加,类似......
  • 基于状态机方法的按键消抖模块FPGA实现,包括testbench
    1.算法仿真效果vivado2019.2仿真结果如下:   系统RTL图:   2.算法涉及理论知识概要        状态机,FSM(FiniteStateMachine),也称为同步有限状态机从。指的是在同步电路系统中使用的,跟随同步时钟变化的,状态数量有限的状态机,简称状态机。 状态机分类 ......
  • 剑指 Offer 56 - I. 数组中数字出现的次数
    题目描述:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。  设 nums=[3,3,4,4,1] ,以上计算流程如下图所示。 本题难点: 数组 nums 有 两个 只出现一次的数字,因此无法通......