当前位置: 首页 > news >正文

【204】C++的vector删除重复元素

有些场景下 vector 中会有重复元素,而业务要求 vector 中避免出现重复元素。

我的算法如下:

  1. 获取当前 vector 的元素数量,并保存到一个 int 类型变量中。
  2. 开启一个外部循环,把 vector 从后向前循环,循环范围是最后一个到正数第二个,获取当前元素。
  3. 开启一个内部循环。从当前 vector 索引向前循环到第一个元素,获取排在前面的元素。
  4. 如果前面的元素中有和当前元素相等的,就删除当前元素,并终止内部循环。如果没有,就让内部循环继续运行直到结束。
  5. 重复第一步,直到外部循环结束。

因为在代码执行过程中,vector 的元素数量有可能变少,所以需要提前保存 vector 的元素数量。

从后向前循环,是为了保证在删除元素的时候,索引不会被影响并且能正确访问 vector 的元素。从前向后的话索引就无法保证能正确访问 vector 的元素了。

下面是以 int 整型为例自的代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<vector>int main(int argc, char** argv) {system("color 02");printf("argc=%d, argv=%s\n", argc, argv[0]);// Prepare the vector and the datas.const int LENGTH = 12;int arr[LENGTH] = { 1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 7 };
//	int arr[LENGTH] = { 12, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1 };std::vector<int> intVector;for (int i = 0; i < LENGTH; i++) {intVector.push_back(arr[i]);}// Print vector content.printf("Before delete repeat:\n");for (std::vector<int>::iterator it = intVector.begin(); it != intVector.end(); it++) {int item = *it;printf("%d ", item);}printf("\n");// Delete the repeat item.int size = intVector.size();for (int i = size - 1; i >= 1; i--) {int current = intVector[i];// 查找前面一个重复的元素并删除。每次只删除一个for (int j = i - 1; j >= 0; j--) {int previous = intVector[j];if (current == previous) {intVector.erase(intVector.begin() + i);// Stop the 'j' for circlej = -1;}} // end for (int j = i - 1; j >= 0; j--)}// Print vector content.printf("Print vector content:\n");for (std::vector<int>::iterator it = intVector.begin(); it != intVector.end(); it++) {int item = *it;printf("%d ", item);}printf("\nEnd.\n");return 0;
}

相关文章:

【204】C++的vector删除重复元素

有些场景下 vector 中会有重复元素&#xff0c;而业务要求 vector 中避免出现重复元素。 我的算法如下&#xff1a; 获取当前 vector 的元素数量&#xff0c;并保存到一个 int 类型变量中。开启一个外部循环&#xff0c;把 vector 从后向前循环&#xff0c;循环范围是最后一个…...

模型案例:| 行李检测模型!

导读 2023年以ChatGPT为代表的大语言模型横空出世&#xff0c;它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力&#xff0c;为人工智能技术的发展开辟了新的可能性。同时&#xff0c;人工智能技术正在进入各种应用领…...

【PostgreSQL】PostgreSQL SQL语句整理:掌握核心技能

在数据库管理的世界里&#xff0c;PostgreSQL以其强大的功能和灵活性而闻名。作为一名数据库开发者或者数据分析师&#xff0c;熟练掌握SQL语句是必不可少的。在本文中&#xff0c;我们将梳理一系列常用的PostgreSQL SQL语句&#xff0c;帮助你更高效地管理你的数据库。 基础操…...

电风扇制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

电风扇正悄然成为制造业数字化转型浪潮中的一颗璀璨新星。通过构建5G智能工厂物联数字孪生平台&#xff0c;电风扇制造业正以前所未有的速度和精度&#xff0c;推进着整个行业的智能化、网络化与个性化发展。5G技术的飞速发展&#xff0c;为制造业带来了前所未有的通信速度和低…...

Zookeeper安装使用教程

# 安装 官网下载安装包 #配置文件 端口默认8080&#xff0c;可能需要更改一下 #启动 cd /Users/lisongsong/software/apache-zookeeper-3.7.2-bin/bin ./zkServer.sh start #查看运行状态 ./zkServer.sh status #停止 ./zkServer.sh stop #启动客户端 ./zkCli.sh ls /...

Linux C# DAY3

作业 1、 #!/bin/bash mkdir -p ~/dir/dir1 mkdir ~/dir/dir2 cp ./* ~/dir/dir1 cp ./*.sh ~/dir/dir2 cd ~/dir/ tar -cvJf dir2.tar.xz ./dir2 mv dir2.tar.xz ~/dir/dir1/ cd ~/dir/dir1/ tar -xvf dir2.tar.xz 2、 #!/bin/bash head -5 /etc/group | tail -1 sudo mkdi…...

Pycharm中虚拟环境依赖路径修改

引言 在pycharm中创建完虚拟环境后&#xff0c;它会自动将同文件夹底下的site_pakages等子文件夹作为该虚拟环境的依赖项。我们可以通过sys.path来查看当前虚拟环境的依赖路径&#xff0c;在这些依赖路径底下的包就可以被import到。但有些情况下&#xff0c;在我们创建了一个虚…...

可视化数据分析收集软件Splunk Enterprise for Mac

Splunk Enterprise for mac 是一款强大的机器数据平台软件&#xff0c;具有以下特点和优势&#xff1a; 软件下载地址 一、功能强大的数据处理能力 专为收集、整理、搜索、分析和监控各种类型或来源的机器数据而设计&#xff0c;能够实时处理大量的机器生成数据&#xff0c;…...

极狐GitLab CI/CD 功能合集(超详细教程)

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

ubuntu安装SFML库+QT使用SFML库播放声音

(1)ubuntu安装SFML库 sudo apt-get install libsfml-dev (2)QT使用SFML库播放声音 在.pro文件中添加头文件路径和库文件路径 INCLUDEPATH /usr/include/SFML LIBS /usr/lib/x86_64-linux-gnu/libsfml*.so UI界面中创建一个pushbutton按钮&#xff0c;并且创建槽函数 加载…...

【AI视频】Runway:Gen-2 图文生视频与运动模式详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;仅图片生成视频方法一&#xff1a;通过Midjourney生成图片方法二&#xff1a;通过Runway预览生成图片注意点 &#x1f4af;图加文生成视频方式一&#xff1a;Midjourney…...

GPIO 理解(基本功能、模拟案例)

GPIO GPIO&#xff08;General Purpose Input / Output&#xff09;是通用输入 / 输出端口&#xff0c;简单理解就是它是一个端口&#xff0c;这个端口可以输入或者输出 在一般情况下&#xff0c;GPIO 不能同时输入或输出&#xff0c;即一个端口要么作为输入端口&#xff0c;要…...

LeetCode_sql_day30(1264.页面推荐)

描述 1264.页面推荐 朋友关系列表&#xff1a; Friendship ------------------------ | Column Name | Type | ------------------------ | user1_id | int | | user2_id | int | ------------------------ (user1_id, user2_id) 是这张表具有唯一值的…...

mysql通过binlog做数据恢复

1 介绍 binlog&#xff08;二进制日志&#xff09;在 MySQL 中具有非常重要的作用。它记录了数据库的所有更改操作&#xff0c;主要用于数据恢复、复制和审计等方面。以下是 binlog 的主要作用&#xff1a; 1.数据恢复 binlog 可以用于恢复数据库中的数据。当数据库发生故障时…...

macos清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 解决方法 , 强制清理mac废纸篓 方法

在macos中&#xff0c;删除文件后&#xff0c; 在清理垃圾桶时提示 “操作无法完成&#xff0c;因为该项目正在使用中” 出现这个提示&#xff0c;在大多数的情况下是因为数据问题导致&#xff0c;需要通过磁盘管理工具进行修复&#xff0c;修复后才可彻底的清理垃圾桶。 另外…...

vue3 axios ant-design-vue cdn的方式使用

1、vue3 快速上手 | Vue.js <script src"https://unpkg.com/vue3/dist/vue.global.js"></script><div id"app">{{ message }}</div><script>const { createApp, ref } VuecreateApp({setup() {const message ref(Hello …...

neo4j导入csv数据

neo4j数据可视化实践 手动输入数据 - 官方democsv数据导入准备数据数据处理导入步骤① 导入疾病表格② 导入药物表格③导入疾病-药物关系表格 爬虫的csv文件 手动输入数据 - 官方demo 点击之后&#xff0c;按照左边10张图中的代码&#xff0c;复制粘贴熟悉语法 效果如下 csv数据…...

YOLOV8实现小目标检测

YOLOV8小目标检测 前言&#xff1a;&#xff1a; yolo版出现很多&#xff0c;基本大同小异 但是这些差异让我们考虑在实验中使用哪个版本会比较好&#xff01; 在对小目标检测的过程中&#xff0c;yolov7相比yolov8性能更加好。 如果我们还是想使用yolov8&#xff0c;也是可以实…...

解决 Prettier ESLint 错误

解决 Prettier ESLint 错误 在 Vue.js 项目中使用 ESLint 和 Prettier 时&#xff0c;你可能会遇到类似以下的错误&#xff1a; frontend\src\views\dashboard\MobileConfigPanel.vue1:25 error Delete ␍ …...

百度网盘企业版数据快速上云,数据流转平台 CloudFlow 加速大模型训练迭代

1 项目从何时开始&#xff0c;又是何时结束 一个项目的周期应该如何计算&#xff0c;将计算开始运行作为起点&#xff0c;计算结束运行作为终点&#xff1f; 大模型训练场景中&#xff0c;从 TB/PB 级数据完成收集准备上云&#xff0c;到这些数据被提交至任务开始运行&#x…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...