数组排序和去重 巨坑!!!紧急避雷

news2024/10/7 4:31:46

        首先,我们要先知道数组的排序和去重操作怎么使用。此处采用C++语言。

        

   1.排序操作

#include<iostream>
#include <vector>
#include<algorithm>

using namespace std;
int main()
{
	vector<int>arr = { 9,1,7,8,6,7,3,6,3 };

	sort(arr.begin(), arr.end());

	for (int i : arr)
		cout << i << " ";
	return 0;

}

直接采用迭代器和std库中的排序函数(库中大多采用快排算法)即可,这个简单不多说.

 2.去重操作

        可以用C++STD库中的函数unique,也可以自定义函数,采用双指针方法。

        leetcode中对数组进行去重操作:  https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/

对于自定义函数有兴趣的可以看看.

但此处采用库中的函数 unique 作用是移除相邻的重复元素函数参数是 迭代器类型,并且返回值也是迭代器类型,并且 unique函数只能用于连续存储的容器,如vector和string,

我们可以配合 erase 函数将数组中所有元素进行去重操作。

#include<iostream>
#include <vector>
#include <memory>
#include<algorithm>

using namespace std;
int main()
{
	vector<int>arr = { 9,1,7,8,2,2,5,5,6,3,6,7,3,6,3 };

	vector<int>::iterator it = unique(arr.begin(), arr.end());
	arr.erase(it, arr.end());

	for (int i : arr)
		cout << i << " ";
	return 0;

}

结果如下:

就两行核心代码就可以完成 数组的去重操作了。

3.排序+去重

        注意: 当我们要同时实现这两种操作时,一定要注意 操作顺序,一定先排序再去重,再次强调

先排序再去重,顺序一定不能反。

        首先,让我们看看先去重再排序的结果,或者说是下场 O.o 

我们发现怎么结果还是有重复的,去重操作没有发挥呀。

        然后,我们实现先排序后去重操作,请看:

我们轻易完成了排序和去重操作,两次结果仅仅因为去重和排序代码顺序不同却是天差地别。为什么会这样呢?

        

        其实,我们看上文的去重操作,可以很明显的看到 unique 函数只是针对相邻元素实现去重操作。比如:

若是我们先实现去重操作,只是去重了 相邻元素(下标为4和5)的位置,所以一定注意nique 函数只是针对相邻元素 .

        所以,我们若是先排序在去重就不会这样。

最后叮嘱一遍,若想同时实现 排序和去重操作或者是实现完美去重一定要先实现排序再实现去重!!!!!!!!!

重复这么多因为up之前做一个 oj 想实现排序+去重功能,卡了半天,反复改函数体,希望大家注意这一点,少走冤枉路。

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

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

相关文章

加密 加签

加密&#xff1a;一种通过将数据转换成不可读形式的方法&#xff0c;以防止未授权的访问 加签&#xff1a;侧重于验证数据的完整性和来源的真实性&#xff0c;确保数据未被篡改且来源可靠 加密和加签的区别 加密加签目的保护数据的机密性验证数据的完整性和来源的真实性使用方…

windows连接CentOS数据库或Tomcat报错,IP通的,端口正常监听

错误信息 数据库错误&#xff1a; ERROR 2003 (HY000): Cant connect to MySQL server on x.x.x.x (10060) Tomcat访问错误&#xff1a; 响应时间过长 ERR_CONNECTION_TIMED_OUT 基础排查工作 【以下以3306端口为例&#xff0c;对于8080端口来说操作是一样的&#xff0c;只需…

界面组件DevExpress Blazor UI v23.2新版亮点:图表组件全新升级

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 DevExpress Blazor控件目前已经升级…

【xxl-job | 第二篇】Windows源码安装xxl-job

文章目录 2.Windows源码安装xxl-Job2.1拉取源码2.2IDEA导入2.3初始数据库数据2.4修改properties配置2.5启动admin并进入任务管理后台2.6jar包运行&#xff08;部署到Linux服务器上&#xff09;2.6.1打包2.6.2在xxl-job-admin打开jar包目录2.6.3cmd运行jar包 2.Windows源码安装x…

【快手秘籍】24小时无人播剧狂赚法门!日干500+的秘密武器,合规安全无顾虑

快手无人播剧&#xff0c;之前很火启面打压了一段时间&#xff0c;最近政策又放松了&#xff0c;因为播电视电影这个板块在快手流量很大。 所以官方又放松了&#xff0c;作为普通人想在快手赚取一份收益&#xff0c;这个赛道最合适了只要花点电费&#xff0c;无其他成本。 快…

网络基础-华为VRP基础CLI操作

基本命令模式 华为设备的命令行模式包括用户视图和特权级模式。 用户视图&#xff08;User View&#xff09;&#xff1a;这是用户登录到华为设备时默认进入的模式。在用户视图下&#xff0c;用户可以执行一些基本的查看命令&#xff0c;但不能进行设备配置或管理。提示符通常…

Flutter笔记:Widgets Easier组件库(13)- 使用底部弹窗

Flutter笔记 Widgets Easier组件库&#xff08;13&#xff09;使用底部弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

设计软件有哪些?渲染软件篇(3),渲染100邀请码1a12

今天我们继续介绍几款渲染软件&#xff0c;方便大家了解 1、渲染100(http://www.xuanran100.com/?ycode1a12) 渲染100是网渲平台&#xff0c;为设计师提供高性能的渲染服务。通过它设计师可以把本地渲染移到云端进行&#xff0c;速度快价格便宜&#xff0c;支持3dmax、vray、…

推荐 6 个超好用的 iterm2 zsh 插件

大家好啊&#xff0c;今天给大家分享几个我日常使用的 iterm2 插件&#xff0c;每一个都很有用&#xff0c;希望能给帮助你提高使用命令行的效率&#xff5e; zsh-autosuggestions 插件地址&#xff1a;https://github.com/zsh-users/zsh-autosuggestions 效果展示 当你输入…

YOLOv9改进策略 | 添加注意力篇 | 利用YOLO-Face提出的SEAM注意力机制优化物体遮挡检测(附代码 + 修改教程)

一、本文介绍 本文给大家带来的改进机制是由YOLO-Face提出能够改善物体遮挡检测的注意力机制SEAM&#xff0c;SEAM&#xff08;Spatially Enhanced Attention Module&#xff09;注意力网络模块旨在补偿被遮挡面部的响应损失&#xff0c;通过增强未遮挡面部的响应来实现这一目…

MySQL表的增删查改【基础部分】

数据表的操作 新增 普通插入 insert into 表名 values(值,值...)注意&#xff1a; 此处的值要和表中的列相匹配 使用’‘单引号或者”“双引号来表示字符串 mysql> insert into student values(123,zhangsan); Query OK, 1 row affected (0.02 sec)指定列插入 insert …

【Sql-02】 求每个省份最新登陆的三条数据

SQL 输出要求数据准备sql查询结果 输出要求 要求输出&#xff0c;userid_1,logtime_1,userid_2,logtime_2,userid_3,logtime_3 数据准备 CREATE TABLE sqltest (province varchar(32) NOT NULL,userid varchar(250) DEFAULT NULL,logtime datetime ) ENGINEInnoDB DEFAULT C…

C#开发的网络速度计 - 开源研究系列文章 - 个人小作品

上次发布了一个获取网络速度的例子( https://www.cnblogs.com/lzhdim/p/18167854 )&#xff0c;就是为了这次这个例子。用于在托盘里显示网络速度的图标&#xff0c;并且能够显示网络速度。下面就介绍一下这个小应用的源码。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b…

【SpringBoot整合系列】SpringBoot整合RabbitMQ-基本使用

目录 SpringtBoot整合RabbitMQ1.依赖2.配置RabbitMQ的7种模式1.简单模式&#xff08;Hello World&#xff09;应用场景代码示例 2.工作队列模式&#xff08;Work queues&#xff09;应用场景代码示例手动 ack代码示例 3.订阅模式&#xff08;Publish/Subscribe&#xff09;应用…

ICode国际青少年编程竞赛- Python-2级训练场-识别循环规律2

ICode国际青少年编程竞赛- Python-2级训练场-识别循环规律2 1、 for i in range(3):Dev.step(3)Dev.turnRight()Dev.step(4)Dev.turnLeft()2、 for i in range(3):Spaceship.step(3)Spaceship.turnRight()Spaceship.step(1)3、 Dev.turnLeft() Dev.step(Dev.x - Item[1].…

国家软考办:2024年上半年软考考试安排

按照《2024年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作安排及有关事项的通知》&#xff08;计考办〔2024〕1号&#xff09;文件精神&#xff0c;结合各地机位实际&#xff0c;现将2024年上半年计算机软件资格考试有关安排通告如下&#xff1a; 一、考…

小众行业风口:Q1季度擦窗机器人行业线上市场销售数据分析

今天给大家分享一个2024年的小众行业增长风口——擦窗机器人。 作为家居自动化里的重要一员&#xff0c;擦窗机器人可以简称为擦窗神器&#xff0c;是为了解决大户型家庭的外窗清洁痛点而存在。而目前&#xff0c;擦窗机器人行业正在走向成熟&#xff0c;且市场需求量居高不下…

寻找志同道合的小伙伴,让生活更加多彩

在繁忙的生活中&#xff0c;我们时常渴望找到一个可以倾诉心声、分享喜悦和烦恼的角落。有时候&#xff0c;一个简单的聊天就能让心情变得豁然开朗。而今天&#xff0c;我想向大家介绍一个可以让生活更加多彩的小天地——那是一个充满活力和温暖的QQ群。 群号&#xff1a;78004…

二、使用插件一键安装HybridCLR

预告 本专栏将介绍如何使用这个支持热更的AR开发插件&#xff0c;快速地开发AR应用。 专栏&#xff1a; Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景&#xff0c;简化了AR开发流程&#xff0c;让用户可更多地关注Unity场景内容的制作。 热更方案 基于Hybri…

探索Python机器学习:最常打交道的 27 款工具包

前言 前言目前&#xff0c;随着人工智能的大热&#xff0c;吸引了诸多行业对于人工智能的关注&#xff0c;同时也迎来了一波又一波的人工智能学习的热潮&#xff0c;虽然人工智能背后的原理并不能通过短短一文给予详细介绍&#xff0c;但是像所有学科一样&#xff0c;我们并不…