化繁为简:Swift剔除数组中重复元素的几种姿势
本文向大家介绍稍许算法的实现:关于如何去除数组中的重复元素,并比较了三种算法之间的效率.全部代码在Xcode的Playground中实现,直观明了,适合Swift学习入门童鞋观赏.
有个前提
如题,很多童鞋立即给出解决方法,无外乎是利用Swift内置的集合(Set)或字典(Dict)的一个特性:过滤重复元素.
但由于集合和字典中元素的顺序是无法保证的,所以这建立在一个前提基础之上:结果数组元素顺序和原数组可以不同!
但本文的算法要求:在剔除重复元素之后,元素顺序和原数组必须相同,这正是数组核心特点:有序性的一种体现.
第一种实现
如果想要简单,就必须要多些限制.
如果数组元素能满足Hashable协议,我们利用内置集合也未尝不可:
extension Array where Element:Hashable{/// 返回剔除重复元素后的数组,其元素顺序不变public var noRepetitionUseSet:[Element]{var set = Set<Element>(self)var resultAry = [Element]()for item in self{if set.contains(item){//只会保留第一个重复元素!!!resultAry.append(item)set.remove(item)}}return resultAry}
}
如上,我们首先用集合过滤所有重复的元素,然后遍历数组,只保留第一个重复的元素.这样原有数组的顺序即得以保持不变.</
化繁为简:Swift剔除数组中重复元素的几种姿势相关推荐
- 求栈中元素个数算法_Algorithm 大家都会的去除有序数组中重复元素的三种算法...
问题描述 给定一个有序数组,要删除数组重复出现的元素,使得每个元素之出现一次,然后返回移除重复数组后的新长度: 示例: 给定数组 nums = [1,2,4,4],删除重复出现的元素后,原数组变成 n ...
- java删除数组中重复元素的几种方法
Java操控数组,删除数组中所有的重复元素,使其数组元素全部唯一,有以下几种方法: 1,使用set(最好想到),set本身就是不重复的集合: package Array_test;import jav ...
- Js中去除数组中重复元素的几种方法
方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(a ...
- php 从数组里删除元素,PHP从数组中删除元素的四种方法实例
PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...
- 一维数组中重复元素的去除
一维数组中重复元素的去除 前言 一.基本思路 二.步骤 1.设置判断数组Arr[ ]: 2.继承数组newArr[ ]获取不重复元素 总结 前言 关于一维数组中有重复的元素该怎么剔除,作为java初学 ...
- java删除数组中重复元素
id="BAIDU_DUP_fp_iframe" src="https://pos.baidu.com/wh/o.htm?ltr="> > src= ...
- js判断数组中重复元素并找出_javascript查找数组中重复元素的方法
这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...
- 如何统计二维或者多维空间/二维数组中重复元素的数量/计数?numpy一行代码就行了
文章目录 1. 问题说明 2. 解决之道 3. 向原作者致敬 Reference 1. 问题说明 统计一维数组中重复元素的数量是个常见的问题,那么拓展到二维或者更高维度,这个问题依然是常见的.有什么方 ...
- c\c++语言删除数组中重复元素
c\c++语言删除数组中重复元素 如题:num[]={1,2,3,3,4,5,6} 输出为:123456 下为原代码: #include "stdafx.h" #include & ...
- jq 数组不重复_jquery删除数组中重复元素
话不多说,下面就跟着小编来看下利用jquery实现删除数组中重复元素的具体思路吧 首先定义如下数组: var arr=[0,2,3,5,6,9,2]; 我们可以看到数组中存在重复元素'2'; 最后通过 ...
最新文章
- 【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn‘t expect more than one scan
- java 登录按钮响应数据库_用户登录功能的实现—从前端到后台(包括数据库)...
- pip 另一种安装方法:python setup.py install
- 结合现有分布式系统的数据一致性思考
- 2007-11-7学习EXT第一天:EXT简介
- 【jmx】JMX最佳实践与详解
- 机器学习--LR逻辑回归与损失函数理解
- gcc/g++ 参数总结
- linux 骇客帝国脚本,Linux下,那些让人惊叹的命令执行效果
- DB2操作指南及命令大全
- matlab 每日学习 fft2 ifft2函数
- 各类常见时间复杂度复习「o(1), o(n), O(n^2), o(logn), o(nlogn)」
- DBA的职场生涯应如何选择?
- 树莓派4B修复双触摸屏触摸问题
- 2021总结2022规划
- 掌握一项陌生技能,没你想得那么难
- 计算机应用基础(专)【9】
- 174.123.15.31 index.php,腾讯内容开放平台
- 在线解析香港服务器和国内服务器的区别
- 传统蓝牙服务问询协议SDP概念