n个整数,其中有两个数是重复的,要求找出这两个重复的整数

147 阅读1分钟

@TOC 在这里插入图片描述

方法一

使用set集合

  • 将每一个元素放到set集合中,加入的时候判断集合中是否存在此元素,如果if判断找到了这个元素,返回为true

方法二

  • 使用map,形成一个字典;key是对应的元素,value对应出现的次数。 在这里插入图片描述
  • 字典本身的时间复杂度是O(1),整个算法的时间复杂度是O(n)
  • 所谓的字典 也叫散列表,需要开辟一段内存来存储有用的数据信息
  • 空间复杂度:是指一个算法在运行过程中临时占用的存储空间的大小的量度,同样使用大写的O表示

方法三

  • 二重循环 low 省略

空间复杂度的计算

常量空间

  • 算法的存储空间大小固定,和输入规模没有直接的关系 O(1)

线性空间

  • 数组,申请的空间大小和输入的规模成正比 O(n)

二维空间

  • 集合输入的规模的长度和宽度 都与输入的规模n呈正比,O(n^2)

递归空间

  • 递归调用 数据栈里面存储的数据激增,只有遇到终止条件,进行数据的出栈,返回最后的结果
  • 递归操作所需要的内存空间和递归的深度呈正比。纯粹的递归操作的空间复杂度是线性的,如果递归的深度是n,那么空间复杂度是O(n)