又是老话题,数组去重

昨天看到一个讨论数组去重的文章,觉得代码可以再简洁一点。

普通解法

时间复杂度:O(n^2)

function unique(arr){
  return arr.reduce((ret, cur)=> {
    if (ret.includes(cur)) {
      return ret
    } else {
      ret.push(cur)
      return ret
    }
  }, [])
}

高效解法

把object对象看作hashTable的话,那么这个算法时间复杂度:O(n),但是空间复杂度为O(n)

// 没有处理字符与数字的重复性
function unique(arr){
  var dict = {}
  var ret = []

  arr.forEach((val) => {
    val in dict ? null : dict[val] = ret.push(val)
  })

  return ret
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 1、用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。 2、用C语言实现函数void ...
    希崽家的小哲阅读 11,581评论 0 12
  • 好像随着时间,开始变冷淡,开始变得无所谓,因为太在乎也不会改变什么,开始轻易放弃,昨天失去了很多回头想想,好像我什...
    等冬阅读 952评论 0 0
  • 冥想,是最自然,最有价值的人类活动,如果你能够每天练习的话,在心理-情感-精神的各个方面,你会发生惊人的改变。 冥...
    小帆爱阳光阅读 4,680评论 0 1
  • 今天台风来袭,不敢出门又没有接到放假通知,可怕,纠结死我了。虽然最后还是没有去上班,但总觉得不是种滋味。怎么说...
    迷路的傻狐狸阅读 984评论 0 0

友情链接更多精彩内容