要求:
- 数组中的元素 0~n-1
- 任意返回一个重复的数字
- 如果不存在重复,返回-1
需要注意的特殊案例:
如果有超出范围的元素,直接返回-1
时间复杂度O(n)
def main():
nums = list(map(int, input().strip().split(' ')))
n = len(nums)
for i in nums:
if i <0 or i >= n:
return -1
for i in range(n):
while nums[i] != i:
if nums[i] == nums[nums[i]]:
return nums[i]
temp = nums[i]
nums[i] = nums[nums[i]]
nums[temp] = temp
return -1
if __name__ == '__main__':
main()
不修改输入数组,找到重复元素
要求:
- 数组长度是n+1
- 元素的数值范围是1~n
- 一定有一个重复的元素,返回这个元素
- 不能修改输入数组
时间复杂度O(n)