3.数组中的重复数字
题目
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
方法一
排序
现将序列排序,并找出与之后面相邻元素相等的元素。
时间复杂度O(nlogn)
代码
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
nums.sort()
for i in range(len(nums)):
if nums[i] == nums[i+1]:
return nums[i]
方法二
哈希表
创建空字典dic,将没有遍历过的值存在字典dic中,若遍历到字典中存在的值,则直接返回该元素。
时间复杂度O(n)
代码
class Solution:
def findRepeatNumber(self, nums) :
dic = {}
for num in nums:
if num not in dic:
dic[num] = 1
else:
return num
if __name__=='__main__':
a = input()
nums = [int(num) for num in a.strip().split(' ')]
num = Solution().findRepeatNumber(nums)
print(num)