在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1
数据范围:
进阶:时间复杂度,空间复杂度
[2,3,1,0,2,5,3]
2
2或3都是对的
一个奇怪的问题,使用载入示例[2,3,1,0,2,5,3],程序运行没有问题,但是示例简单变更下[[2,3,1,0,2,5],就出现格式错误了,请教下啥原因? class Solution: def duplicate(self , numbers ): # write code here n=len(numbers) for i in range(n): for j in range(n): if i!=j and numbers[i]==numbers[j]: return numbers[i] return -1
class Solution: def duplicate(self , numbers ): # write code here i = 0 length = len(numbers) while i < length: if numbers[i] != i: if numbers[i] == numbers[numbers[i]]: return numbers[i] temp = numbers[numbers[i]] numbers[numbers[i]] = numbers[i] numbers[i] = temp i -= 1 i += 1 return -1
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param numbers int整型一维数组 # @return int整型 # class Solution: def duplicate(self , numbers ): # write code here if len(numbers)<0: return -1 visited = set() numbers.sort() for x in numbers: if x not in visited: visited.add(x) else: return x return -1
class Solution: def duplicate(self , numbers ): if not numbers&nbs***bsp;len(numbers)==0: return -1 n=len(numbers) s=sorted(numbers) k=0 for i in range(n-1): if s[i]==s[i+1]: k+=1 return s[i] if k==0: return -1