Leetcode 刷题Day1(3/2)
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
①set里面找
class Solution(object):
def findRepeatNumber(self, nums):
tmp=set()
for num in nums:
if num in tmp:
return num
tmp.add(num)
return -1
#和今天的题1差不多
#碎碎念一下……几个语言的判断函数真的好容易混啊,java用的是contais,py用的是in
#而且,为什么C++题解中不用set而是map呢,C++不是有set嘛……

②索引,先一一对应【第0个数字必须为0这样,然后找到重复的】
class Solution(object):
def findRepeatNumber(self, nums: List[int]) ->int:
i=0
while i<len(nums):
if nums[i]==i:
i=i+1
continue
if nums[nums[i]]==nums[i]: return nums[i]
nums[nums[i]], nums[i] = nums[i], nums[nums[i]]
return -1
