c++ 实现向量去重操作
去重的时候要考虑线性表或链表是否是有序
1.1.无序线性表
对于向量[1,5,3,7,2,4,7,3], 从头开始扫描vector内的元素, 对于表中r处的元素a[r], 检查数组0至r-1区间内是否存在与a[r]重复的元素, 如果存在就删除,否则r++
void deduplicate(vector<int> a){
int len = a.size(), r = 0;
vector<int>::itrator it;
while(++r < len){
# find the duplicate before a[r]
it = find(a.begin(), a.begin()+r, a[r]);
# remove the duplicate if it is found
if(it!=a.begin()+r) a.erase(it);
}
}
1.2.有序线性表
以重复区间为单位批量删除. 对于向量[2,2,2,3,3,3,6,6,6,6,9,9],设两个指针i, j, 初始时 i 指向第一个元素, j 指向紧邻i 的第二个元素, 如果a[i]=a[j], 则直接跳过(++j), 否则令i指向j所对应的元素, 然后++j
vector<int> deduplicate(vector<int> a){
int i=0, j = 0;
int len = a.size();
# scan the vector the the end
while(++j < len){
# skip the duplicates
if(a[i]!=a[j]) a[++i] = a[j];
}
vector<int> newv(a.begin(), a.begin()+i+1);
return newv;
}
参考资料: 数据结构 c++第三版 邓俊辉著
c++ 实现向量去重操作的更多相关文章
- C# List集合去重操作注意点
今天调试代码时发现list的distinct方法在对引用类型操作时并没有去重,后来查阅资料发现list去重操作对象集合时比较的是对象的一个个引用地址, 因为集合里的对象都是一个个单独的实例,所以并不会 ...
- List 去重操作
list集合的去重操作 List<string> listCatalogID = list.Select(a=>a.CatalogID).Distinct().ToList(); 代 ...
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
[原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...
- java list去重操作实现方式
Java中的List是可以包含重复元素的(hash code 和equals),接下来将介绍两种方式实现java list去重操作,感兴趣的朋友可以参考下 Java中的List是可以包含重复元素的 ...
- Excel去重操作
工作中经常遇到要对 Excel 中的某一列进行去重操作,得到不重复的结果,总结如下: 选中要操作的列(鼠标点击指定列的字母,如T列) 点击"数据"中"排序和筛选" ...
- redis数据库的set去重操作
一:业务需求 用户名存储之前进行去重判断 方法一:使用redis的set集合进行去重判断 keys * 查看所有的键 type 键名 查看对应的数据类型 sadd set a b c 往set集合里 ...
- Sequence Model-week2编程题1-词向量的操作【余弦相似度 词类比 除偏词向量】
1. 词向量上的操作(Operations on word vectors) 因为词嵌入的训练是非常耗资源的,所以ML从业者通常 都是 选择加载训练好 的 词嵌入(Embedding)数据集.(不用自 ...
- 对list集合去重操作
import java.util.ArrayList; import java.util.List; //删除集合中重复的数据 public class RemoteTheSameDataInList ...
- excel实现筛选去重操作
前情提要: 做图表时,希望更新数据后能自动化更新图表,需要各种公式之间相互配合.此时的需求是,将A表中的不同用户登录的地点做一个图表统计. 1.创建透视表 以用户id和地点当做行标签制作透视表,透视表 ...
随机推荐
- Flutter: SliverAppBar 应用程序栏与滚动视图集成,以便它可以根据滚动偏移量在高度上变化
API class _MyHomeState extends State<MyHome> with SingleTickerProviderStateMixin { @override W ...
- DAPHNE PATEL:有主见的人,才能活出精彩人生
有主见的人,会活出什么样子呢?近日,NGK灵石团队技术副总裁DAPHNE 女士给出了答案. DAPHNE PATEL表示,有主见的人,才能活出精彩的人生.为什么这么说呢? DAPHNE PATEL用自 ...
- 利用Metasploit 打入ThinkPHP内网...
出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图 Metasploi ...
- Python分类模型构建
分离训练集测试集 from sklearn.model_selection import train_test_split eg: X_train, X_test, y_train, y_test = ...
- Docker的镜像操作
Docker镜像操作 一.查看镜像 docker images # 查看本地镜像 二.搜索镜像 docker search 镜像名字 docker search centos 三.下载(拉取)镜像 自 ...
- Svelte 极简入门
弹指之间即可完成. 注意:原文发表于 2017-8-7,随着框架不断演进,部分内容可能已不适用. Svelte 是一种新型框架. 以往我们要引入一个框架或者类库,可以通过在页面上放置 ...
- java的基础知识
编写一个hello,world public class Hello{ public static void main(String[] arge){ System.out.p ...
- Kafka集群消息积压问题及处理策略
通常情况下,企业中会采取轮询或者随机的方式,通过Kafka的producer向Kafka集群生产数据,来尽可能保证Kafka分区之间的数据是均匀分布的. 在分区数据均匀分布的前提下,如果我们针对要处理 ...
- Linux ctrl+z挂起的进程恢复与杀死
Linux系统下,不小心按了ctrl+z命令后,退出了当前进程的执行界面,程序没有结束,只是被挂起了.通过ps命令可以查看进程信息,这里不做详细介绍,可通过jobs命令查看被挂起的进程号 #jobs ...
- 剑指 Offer 63. 股票的最大利润 + 动态规划
剑指 Offer 63. 股票的最大利润 Offer_63 题目描述 方法一:暴力法 package com.walegarrett.offer; /** * @Author WaleGarrett ...