本文向大家介绍稍许算法的实现:关于如何去除数组中的重复元素,并比较了三种算法之间的效率.全部代码在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剔除数组中重复元素的几种姿势相关推荐

  1. 求栈中元素个数算法_Algorithm 大家都会的去除有序数组中重复元素的三种算法...

    问题描述 给定一个有序数组,要删除数组重复出现的元素,使得每个元素之出现一次,然后返回移除重复数组后的新长度: 示例: 给定数组 nums = [1,2,4,4],删除重复出现的元素后,原数组变成 n ...

  2. java删除数组中重复元素的几种方法

    Java操控数组,删除数组中所有的重复元素,使其数组元素全部唯一,有以下几种方法: 1,使用set(最好想到),set本身就是不重复的集合: package Array_test;import jav ...

  3. Js中去除数组中重复元素的几种方法

    方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(a ...

  4. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  5. 一维数组中重复元素的去除

    一维数组中重复元素的去除 前言 一.基本思路 二.步骤 1.设置判断数组Arr[ ]: 2.继承数组newArr[ ]获取不重复元素 总结 前言 关于一维数组中有重复的元素该怎么剔除,作为java初学 ...

  6. java删除数组中重复元素

    id="BAIDU_DUP_fp_iframe" src="https://pos.baidu.com/wh/o.htm?ltr="> > src= ...

  7. js判断数组中重复元素并找出_javascript查找数组中重复元素的方法

    这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...

  8. 如何统计二维或者多维空间/二维数组中重复元素的数量/计数?numpy一行代码就行了

    文章目录 1. 问题说明 2. 解决之道 3. 向原作者致敬 Reference 1. 问题说明 统计一维数组中重复元素的数量是个常见的问题,那么拓展到二维或者更高维度,这个问题依然是常见的.有什么方 ...

  9. c\c++语言删除数组中重复元素

    c\c++语言删除数组中重复元素 如题:num[]={1,2,3,3,4,5,6} 输出为:123456 下为原代码: #include "stdafx.h" #include & ...

  10. jq 数组不重复_jquery删除数组中重复元素

    话不多说,下面就跟着小编来看下利用jquery实现删除数组中重复元素的具体思路吧 首先定义如下数组: var arr=[0,2,3,5,6,9,2]; 我们可以看到数组中存在重复元素'2'; 最后通过 ...

最新文章

  1. 【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn‘t expect more than one scan
  2. java 登录按钮响应数据库_用户登录功能的实现—从前端到后台(包括数据库)...
  3. pip 另一种安装方法:python setup.py install
  4. 结合现有分布式系统的数据一致性思考
  5. 2007-11-7学习EXT第一天:EXT简介
  6. 【jmx】JMX最佳实践与详解
  7. 机器学习--LR逻辑回归与损失函数理解
  8. gcc/g++ 参数总结
  9. linux 骇客帝国脚本,Linux下,那些让人惊叹的命令执行效果
  10. DB2操作指南及命令大全
  11. matlab 每日学习 fft2 ifft2函数
  12. 各类常见时间复杂度复习「o(1), o(n), O(n^2), o(logn), o(nlogn)」
  13. DBA的职场生涯应如何选择?
  14. 树莓派4B修复双触摸屏触摸问题
  15. 2021总结2022规划
  16. 掌握一项陌生技能,没你想得那么难
  17. 计算机应用基础(专)【9】
  18. 174.123.15.31 index.php,腾讯内容开放平台
  19. 在线解析香港服务器和国内服务器的区别
  20. 传统蓝牙服务问询协议SDP概念

热门文章

  1. php复杂海报合成,才发现 | 每一步都不该错过的合成海报教程
  2. 写博客必备!手把手教大家搭建免费图床,真香!
  3. 证明:凸多边形裁剪一次最多能够新增一个凸多边形
  4. jquery validate 验证单个
  5. 利用JavaScript在canvas中画一棵树
  6. Linux内核详解与内核优化方案
  7. ASP.NET MVC2 视频教程下载地址
  8. 【css练习】方格背景
  9. UML用例图讲解及画法
  10. 5G无线网络优化覆盖