数组中重复的数字 ( python实现 )
由于个人能力有限,实现方式仅供参考。欢迎大佬们批评指正。
一、题目描述
题目一:找出数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。
二、解题思路
暂略。(此处主要作为书中python实现补充)
三、代码实现
时间复杂度为
O
(
n
)
O(n)
O(n),空间复杂度为
O
(
1
)
O(1)
O(1)。
python 代码实现如下:
def duplicateNumber(myList):
list_size = len(myList)
if list_size == 0:
return False
for i in range(list_size):
if myList[i] < 0 or myList[i] >= list_size:
return False
for i in range(list_size):
while myList[i] != i:
if myList[i] == myList[myList[i]]:
return True
temp = myList[myList[i]]
myList[myList[i]] = myList[i]
myList[i] = temp
return False
>>> myList = [2,3,1,0,2,5,3]
>>> duplicateNumber(myList)
Out:
True
>>> myList = [0,1,2,3,4,5,6]
>>> duplicateNumber(myList)
Out:
False
推荐继续阅读