找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
我是个刚刚刷算法的菜鸡,刚刚看到这题,我开始只能想到用python的字典对象进行解题,原理是对照字典如果这个int类型不在这个字典里,就将这个对象存储在这个字典,如果已经存在的话,这个显而易见就是我们要找的重复数字,代码在下面.
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
repeatDict = {}
for num in nums:
if num not in repeatDict:
repeatDict[num] = 1
else:
return num
后来想想可以先排序,然后看相邻的两个位置是否一样
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
nums.sort()
pre = nums[0]
n = len(nums)
for index in range(1, n):
if pre == nums[index]:
return pre
pre = nums[index]
也可以更加简单点
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
nums.sort()
for i in range(len(nums)-1):
if nums[i] == nums[i+1]:
return nums[i]
对照别人写的java代码发现python在运行速度上确实要比java要慢很多,但是java也更加占内存的.暂时只能想到这些解题.