描述:
在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
思路:
对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。
解答:
def duplicate():
nums = [1,3,0,5,3,4]
result = []
for i in range(len(nums)):
while i != nums[i]:
if nums[i] == nums[nums[i]]:
result.append(nums[i])
return True, result
nums[nums[i]], nums[i] = nums[i], nums[nums[i]]
return False, result
print duplicate()