在一个长度为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都是对的
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param numbers int整型一维数组 # @return int整型 # class Solution: def duplicate(self, numbers: List[int]) -> int: # write code here if numbers == []: return -1 else: value_index = {} # 哈希表 for i, num in enumerate(numbers): if num in value_index: return numbers[i] value_index[num] = i
class Solution: def duplicate(self , numbers: List[int]) -> int: # write code here if len(numbers) is not None: if len(numbers) ==1: return -1 for i in range(len(numbers)): if i == len(numbers)-1: return -1 else: if numbers[i] in numbers[i+1:]: return numbers[i] return -1代码优化空间很大
class Solution: def duplicate(self , numbers: List[int]) -> int: aa=list(set(numbers)) for i in range(len(aa)): while numbers.count(aa[i])>1: return aa[i] return -1
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param numbers int整型一维数组 # @return int整型 # from collections import Counter class Solution: def duplicate(self , numbers: List[int]) -> int: # write code here if len(numbers) == 0: return -1 else: dict_ = Counter(numbers) #使用Counter统计每个数字出现的次数 return dict_.most_common(1)[0][0] #most_common(N),返回n个最常见的数字