【数组】数组中重复的数字
数组中重复的数字第一次的思路:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000第一次的思路:直接使用count函数,
·
数组中重复的数字
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
限制:
2 <= n <= 100000
方法1:
直接使用count函数,进行统计,遇到出现次数不为1的直接输出即可。
【错误】:超过了限定的时间
python
class Solution(object):
def findRepeatNumber(self, nums):
for i in nums:
if nums.count(i) != 1: #统计出现的次数,如果不为1,直接输出,并且返回
print(i) #循环结束
return i
return '#'
方法2
思路:排序方法:
1、先将数组排好序
2、在查找重复数字:先用第一个元素进行对比,如果后边有和它相等的,直接返回该元素,没有的话,用第二个元素和后继的元素依次比较。
时间复杂度O(nlogn),空间复杂度O(1)
class Solution(object):
def findRepeatNumber(self, nums):
nums.sort() #排序
p = nums[0] #将第一个元素赋给p
for i in range(1, len(nums)): #对列表从第二个元素开始遍历
if p == nums[i]: #如果P=
return p
pre = nums[i]
方法3
思路:使用字典。
1、遍历整个数组,当这个数字没有出现过字典里有的元素的时候,将其加入进去,如果字典中存在,直接返回即可
2、时间复杂度O(n),空间复杂度O(n)
class Solution(object):
def findRepeatNumber(self, nums):
dic = {} #定义空字典
for i in nums: #遍历数组
if i not in dic: #判断数组元素是否在字典中,不在的话,就放进字典即可
dic[i] = 0 #value随便赋,因为是对key进行操作
else: #否则,直接返回重复元素
return i
更多推荐
已为社区贡献2条内容
所有评论(0)