[算法] - 找出重复数字

描述:

在一个长度为 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()

你可能感兴趣的:([算法] - 找出重复数字)