《剑指Offer》刷题之数组中重复的数字
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是第一个重复的数字2。没有重复的数字返回-1。 - 示例:
示例 1 :
输入:[2,3,1,0,2,5,3]
返回值:2
- 代码1:
class Solution:
def duplicate(self , numbers ):
temp = 0
d = {
}
for i in range(len(numbers)):
d[numbers[i]] = d.get(numbers[i],0) + 1
if d[numbers[i]] == 2:
return numbers[i]
return -1
- 算法说明:
建立字典,逐个遍历数组中的元素,将元素的个数存入字典,当元素的个数超过2的时候,返回当前元素。