[S]O-03数组中重复数字
问题描述:
数组中重复数字
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
解决方案:
1- Method1:利用hash
- 初始化:
新建 HashSet ,记为 dicdic ; - 遍历数组 nums 中的每个数字 num:
当 num在 dic中,说明重复,直接返回 num ;
将 num添加至 dic 中;
返回 -1。
本题中一定有重复数字,因此这里返回多少都可以。
Solution:
class Solution:
def findRepeatNumber(self, nums: [int]) -> int:
dic = set()
for num in nums:
if num in dic: return num
dic.add(num)
return -1
My solution:
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
# Method1:
dic={}
for num in nums:
if num not in dic:
dic[num]=0
else:
return num
2- Method2:利用set
如果长度有变化,就说明重复,返回该数字。
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
# Method2
s=set()
for i in range(len(nums)):
s.add(nums[i])
if len(s)<i+1:
return nums[i]
3- Method3:利用sort
先对数组进行排序,然后从头扫描数组并判断其是否与其前面相邻元素相等。如果是,返回结果即可。
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
# Method3
nums.sort()
temp = -1
for num in nums:
if num == temp:
return num
else:
temp = num
结果:
--------------2020/12/13—简单的第一题------------------