c++三个方法50.找出数组重复数字

找出数组中重复的数字
在一个从度为n的数组里的所有数字都在0~n-1的范围内,数组中某些数字是重复的,但不知道有几个数字重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.

方案1:先排序,再查找。先将数组排序,然后比较相邻元素,如果相等就找到重复数,时间复杂度为O(nlogn)。
c++三个方法50.找出数组重复数字_第1张图片

方案2:借用一个哈希表来查找。首先遍历整个数组,每遍历一个元素都与哈希表中的值比较,如果没有就把该元素加入到哈希表中,如果有就找到重复数了。时间复杂度是O(n),但是消耗了一个大小为O(n)的哈希表,是典型的以空间换取时间的做法。
c++三个方法50.找出数组重复数字_第2张图片
c++三个方法50.找出数组重复数字_第3张图片c++三个方法50.找出数组重复数字_第4张图片

你可能感兴趣的:(笔记)