C++之去重
note
今天刷题,忘了去重复库函数,于是手写了一个。 前提: 必须保证数组是有序的。
源码
template <typename T>
void unique_arr(T arr[], int len, T* parr, int& out_len)
{
if (1 > len || nullptr == parr || NULL == parr)
return;
int cur_index = 0;
int pre_index = 0;
int real_len = 1;
parr[0] = arr[0];
while (cur_index < len)
{
if (arr[pre_index] != arr[++cur_index])
{
pre_index = cur_index;
parr[real_len++] = arr[cur_index];
}
}
out_len = real_len;
}
调用
int arr2[10] = { 0 };
int real_len = 0;
int arr[] = { 5, 1, 3, 2, 3, 4, 4, 2, 1, 6 };
// 排序
std::sort(std::begin(arr), std::end(arr));
// 去重复
unique_arr(arr, 10, arr2, real_len);
// 输出
for (int i = 0; i < real_len - 1; ++i)
std::cout << " " << arr2[i];
C++之去重的更多相关文章
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- 数组去重 JS
我说的数组去重是这样的: var arr = ['f', 'a', 'b', 'd', 'e', 'g'] ; var str='f'; 去除arr中的str 最简单的是遍历arr与str做比较, ...
- [Algorithm] 使用SimHash进行海量文本去重
在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(L ...
- JS去重及字符串奇数位小写转大写
面试中经常会考到数组的去重.作为一名合格的前端开发者,不知道几种去重方法是在不应该.废话不多说直接开撸-- 一.indexOf()方法 实现思路:使用indexOf()方法来判断新数组中是否有这个值, ...
- js数组去重
这就是数组去重了...var str=['hello','node','element','node','hello','blue','red'];var str1=[]; function firs ...
- [Hadoop]-从数据去重认识MapReduce
这学期刚好开了一门大数据的课,就是完完全全简简单单的介绍的那种,然后就接触到这里面最被人熟知的Hadoop了.看了官网的教程[吐槽一下,果然英语还是很重要!],嗯啊,一知半解地搭建了本地和伪分布式的, ...
- 1.uniq去重命令讲解
uniq命令: 常见参数: -c,--count ***** 在每行旁边显示改行重复出现的次数 -d,--repeated 仅显示重复出现的行,2次或2次以上的行,默认的去重包 ...
- python list dict 去重的两种方式
def dedupe(items, key=None): seen = set() for item in items: val = item if key is None else key(item ...
- js给数组去重写法
数组为 var list =['A','B','A']; 法一:常规做法,新建list,给list添加元素,添加前判断是否包含 var removeRepeatItem = function(list ...
- 分享一种容易理解的js去重排序方法
<script> var arr=[1,8,6,4,88,22,99,4,6,86,5,58,89,5]; //先使用sort()函数去重 var a=arr.sort(function ...
随机推荐
- Java培训班学员如何找工作?如何过试用期?
在本文里,首先将结合我了解的多家培训班辅导学员就业的情况,来讲讲培训班学员如何高效找工作.由于本人在周末会兼职在培训班讲课,也帮助过不少学员成功入职,所以下文还会给出"培训班学员如何快速适应 ...
- python18内存管理
- git创建项目,代码仓库
1.首先在服务端远程创建仓库 mkdir project.git cd project.git git --bare init 2.在本地创建项目推送到远程服务端仓库 mkdir myproj ...
- Python文件复制shutil模块
Python中shutil模块主要用于文件操作,如复制,属性判断等 1.copyfileobj,拷贝文件内容,将文件句柄赋给该方法 def copyfileobj(src, dst, length=1 ...
- PHP生成EXCEL,支持多个SHEET
PHP生成EXCEL,支持多个SHEET 此版本为本人演绎版本,原版本地址http://code.google.com/p/php-excel/ php-excel.class.php: <?p ...
- 取gridview中textbox的值【C#】
<asp:GridView ID="gridView" runat="server" OnRowCommand="gridView_RowCom ...
- 全网最详细的ReentrantReadWriteLock源码剖析(万字长文)
碎碎念) 花了两天时间,终于把ReentrantReadWriteLock(读写锁)解析做完了.之前钻研过AQS(AbstractQueuedSynchronizer)的源码,弄懂读写锁也没有想象中那 ...
- Vue函数防抖和函数节流
函数防抖(debounce) 应用场景 登录.发短信等按钮避免用户点击太快,以致于发送了多次请求,需要防抖 调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位,就用到了防 ...
- RTSP, RTP, RTCP, RTMP傻傻分不清?
RTSP基于TCP传输请求和响应报文,RTP基于UDP传输流媒体数据,RTCP基于UDP传送传输质量信息(如丢包和延迟). 比如喀什一个局域网内10个人同时点播广州的同一个源,喀什和广州之间就要传10 ...
- A Child's History of England.46
As, one hundred years before, the servile [卑躬屈膝的~serve] followers of the Court had abandoned the Con ...