剑指offer--面试题51: 数组中重复的数字
2016-09-28 16:21
716 查看
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。python实现:
# -*- coding:utf-8 -*-
class Solution:
# 这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
# 函数返回True/False
def duplicate(self, numbers, duplication):
# write code here
n = len(numbers)
if n==0 or n==1:
duplication = numbers
return False
#找到一个重复值就行
#把数字放到它该在的位置
i = 0
while i<n:
if numbers[i]!=i:
if numbers[numbers[i]] == numbers[i]:
duplication[0] = numbers[i]
return True
tmp = numbers[i]############重要,
#直接写成numbers[i], numbers[numbers[i]] = numbers[numbers[i]], numbers[i]会出错,因为numbers[i]的值在改变
numbers[i], numbers[tmp] = numbers[tmp], numbers[i]
else:
i += 1
return False
相关文章推荐
- 剑指Offer——面试题51:数组中重复的数字
- 【剑指Offer学习】【面试题51:数组中重复的数字】
- 剑指offer——面试题51:数组中重复的数字
- (python)剑指Offer 面试题51:数组中重复的数字
- 剑指Offer面试题51(Java版):数组中重复的数字
- 【剑指Offer学习】【面试题51:数组中重复的数字】
- 剑指offer面试题51 数组中重复的数字
- 剑指offer-面试题51:数组中重复的数字
- 剑指Offer面试题51:数组中的重复数字
- 剑指offer 面试题51 数组中重复的数字
- 剑指Offer 51数组中的重复数字 Java版
- 剑指Offer-面试题3 数组中重复的数字
- 剑指offer 51 数组中重复的数字
- 【剑指offer】题51:数组中重复的数字
- 剑指Offer面试题3:数组中重复的数字
- C++找出数组中重复的数字( 剑指offer面试题3-1)
- 【剑指Offer】面试题51:数字中重复的数字
- 剑指Offer 51数组中重复的数字
- 剑指offer面试题3-数组中重复的数字 java
- <剑指offer 面试题3> 数组中重复的数字(Java实现)