给定一个长度为 nn 的整数数组 nums
,数组中所有的数字都在 0∼n−10∼n−1 的范围内。
数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。
请找出数组中任意一个重复的数字。
注意:如果某些数字不在 0∼n−10∼n−1 的范围内,或数组中不包含重复数字,则返回 -1;
数据范围
0≤n≤10000≤n≤1000
样例
给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。
返回 2 或 3。
其实狠简单,首先我们先把数字都记录下来,然后用一个list用于存储出现的数字nums。题目里面要求数字需要在 0 ~ n-1 之间,所以list和nums的长度就要相等。我们就用 list[i] 来表示数字i在数组nums里面出现过的次数。之后我们再来判断数组里面的每个数字是不是在 0 ~ n-1 的这个范围里面,根据题目要求不满足就返回 -1 。
class Solution(object):
def duplicateInArray(self, nums):
"""
:type nums: List[int]
:rtype int
"""
changdu = len(nums);
list = [0]*changdu;
for i in nums:
if i < 0 or i > changdu - 1:
return -1
list[i] += 1;
for i in range(changdu):
if list[i] > 1:
return i
return -1