【204】C++的vector删除重复元素
有些场景下 vector 中会有重复元素,而业务要求 vector 中避免出现重复元素。
我的算法如下:
- 获取当前 vector 的元素数量,并保存到一个 int 类型变量中。
- 开启一个外部循环,把 vector 从后向前循环,循环范围是最后一个到正数第二个,获取当前元素。
- 开启一个内部循环。从当前 vector 索引向前循环到第一个元素,获取排在前面的元素。
- 如果前面的元素中有和当前元素相等的,就删除当前元素,并终止内部循环。如果没有,就让内部循环继续运行直到结束。
- 重复第一步,直到外部循环结束。
因为在代码执行过程中,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 中会有重复元素,而业务要求 vector 中避免出现重复元素。 我的算法如下: 获取当前 vector 的元素数量,并保存到一个 int 类型变量中。开启一个外部循环,把 vector 从后向前循环,循环范围是最后一个…...
模型案例:| 行李检测模型!
导读 2023年以ChatGPT为代表的大语言模型横空出世,它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力,为人工智能技术的发展开辟了新的可能性。同时,人工智能技术正在进入各种应用领…...
【PostgreSQL】PostgreSQL SQL语句整理:掌握核心技能
在数据库管理的世界里,PostgreSQL以其强大的功能和灵活性而闻名。作为一名数据库开发者或者数据分析师,熟练掌握SQL语句是必不可少的。在本文中,我们将梳理一系列常用的PostgreSQL SQL语句,帮助你更高效地管理你的数据库。 基础操…...
电风扇制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
电风扇正悄然成为制造业数字化转型浪潮中的一颗璀璨新星。通过构建5G智能工厂物联数字孪生平台,电风扇制造业正以前所未有的速度和精度,推进着整个行业的智能化、网络化与个性化发展。5G技术的飞速发展,为制造业带来了前所未有的通信速度和低…...
Zookeeper安装使用教程
# 安装 官网下载安装包 #配置文件 端口默认8080,可能需要更改一下 #启动 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中创建完虚拟环境后,它会自动将同文件夹底下的site_pakages等子文件夹作为该虚拟环境的依赖项。我们可以通过sys.path来查看当前虚拟环境的依赖路径,在这些依赖路径底下的包就可以被import到。但有些情况下,在我们创建了一个虚…...
可视化数据分析收集软件Splunk Enterprise for Mac
Splunk Enterprise for mac 是一款强大的机器数据平台软件,具有以下特点和优势: 软件下载地址 一、功能强大的数据处理能力 专为收集、整理、搜索、分析和监控各种类型或来源的机器数据而设计,能够实时处理大量的机器生成数据,…...
极狐GitLab CI/CD 功能合集(超详细教程)
极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐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按钮,并且创建槽函数 加载…...
【AI视频】Runway:Gen-2 图文生视频与运动模式详解
博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 💯前言💯仅图片生成视频方法一:通过Midjourney生成图片方法二:通过Runway预览生成图片注意点 💯图加文生成视频方式一:Midjourney…...
GPIO 理解(基本功能、模拟案例)
GPIO GPIO(General Purpose Input / Output)是通用输入 / 输出端口,简单理解就是它是一个端口,这个端口可以输入或者输出 在一般情况下,GPIO 不能同时输入或输出,即一个端口要么作为输入端口,要…...
LeetCode_sql_day30(1264.页面推荐)
描述 1264.页面推荐 朋友关系列表: Friendship ------------------------ | Column Name | Type | ------------------------ | user1_id | int | | user2_id | int | ------------------------ (user1_id, user2_id) 是这张表具有唯一值的…...
mysql通过binlog做数据恢复
1 介绍 binlog(二进制日志)在 MySQL 中具有非常重要的作用。它记录了数据库的所有更改操作,主要用于数据恢复、复制和审计等方面。以下是 binlog 的主要作用: 1.数据恢复 binlog 可以用于恢复数据库中的数据。当数据库发生故障时…...
macos清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 解决方法 , 强制清理mac废纸篓 方法
在macos中,删除文件后, 在清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 出现这个提示,在大多数的情况下是因为数据问题导致,需要通过磁盘管理工具进行修复,修复后才可彻底的清理垃圾桶。 另外…...
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 点击之后,按照左边10张图中的代码,复制粘贴熟悉语法 效果如下 csv数据…...
YOLOV8实现小目标检测
YOLOV8小目标检测 前言:: yolo版出现很多,基本大同小异 但是这些差异让我们考虑在实验中使用哪个版本会比较好! 在对小目标检测的过程中,yolov7相比yolov8性能更加好。 如果我们还是想使用yolov8,也是可以实…...
解决 Prettier ESLint 错误
解决 Prettier ESLint 错误 在 Vue.js 项目中使用 ESLint 和 Prettier 时,你可能会遇到类似以下的错误: frontend\src\views\dashboard\MobileConfigPanel.vue1:25 error Delete ␍ …...
百度网盘企业版数据快速上云,数据流转平台 CloudFlow 加速大模型训练迭代
1 项目从何时开始,又是何时结束 一个项目的周期应该如何计算,将计算开始运行作为起点,计算结束运行作为终点? 大模型训练场景中,从 TB/PB 级数据完成收集准备上云,到这些数据被提交至任务开始运行&#x…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
