本文向大家介绍稍许算法的实现:关于如何去除数组中的重复元素,并比较了三种算法之间的效率.全部代码在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. 神经网络中激活函数的真正意义?
  2. ERROR: Could not find a version that satisfies the requirement trusted-host (from versions: none) ER
  3. 手游研发CJ抱大腿指南
  4. c标准基本库函数:libc、glibc的关系
  5. Java并发编程:并发容器之CopyOnWriteArrayList(转载)
  6. JavaScript 设计模式之构造函数模式
  7. 用 WebClient 轻松实现文件下载上传、网页抓取
  8. 巧用 | 低成本高可用,巧用Redis
  9. DPDK内存篇(三): 标准大页、NUMA、DMA、IOMMU、IOVA、内存池
  10. 搭建Hexo博客并部署到Github
  11. linux 判断某进程 前台还是后台,Linux进程管理——进程前后台(优先级)以及作业控制等...
  12. oracle 11g 01017,oracle 11G OEM 出现问题 ORA-01017: inv
  13. Python数据结构判断括号是否匹配
  14. Eclipse+Wildfly10 创建第一个EJB项目
  15. 2022年贵州大学计算机考研(初试+复试+实验室经验贴)
  16. 001之Persimmon UI Builder与柿饼派GUI智能屏模组学习
  17. pip安装包下载地址
  18. [YOLOv7]基于YOLO&Deepsort的车速&车流量检测系统(源码&部署教程)
  19. mahout fpg
  20. 关于Trunk、Hybrid、Access、Tag、Untag、Pvid的关系

热门文章

  1. python绘制正多边形_python : turtle 画正多边形
  2. 时间校准(全网最全最准确方案)完美无解
  3. 号外,号外,《React Native移动开发实战》出版啦
  4. string 类(二)
  5. ICE java实现helloworld
  6. 利用C语言编程输出小写英文字母表的大写形式(以5为间隔)
  7. 使用 python 给 PDF 添加目录书签
  8. 巴菲特致股东的一封信:1991年
  9. 什么是收集服务器配置信息,配置rsyslog服务器收集Cisco交换机日志信息操作指引...
  10. ubuntu18.04 netplan 设置dns,dns不生效