您的位置:首页 > 职场人生

面试题3:数组中重复的数字

2018-03-09 21:54 281 查看
lis = [2,1,3,4,3]
def f(lis):
for index in range(len(lis)):
while index != lis[index]:
if lis[index] == lis[lis[index]]:
print(lis[index])
break
k = lis[index]
lis[index] = lis[lis[index]]
lis[k] = k

print(f(lis))
题目二:不修改数组找出重复数字
def f_2(lis):
if lis == None:
return False
end = len(lis) - 1
start = 1
while end >= start:
mid = (end-start)//2+start
count = contrange(lis, start, mid)
if end == start:
if count >1:
return start
else:
break
if count >(mid - start +1):
end = mid
else:
start = mid + 1

def contrange(lis, start, end):
if lis == None:
return False
c = 0
for i in range(len(lis)):
if (lis[i] >= start) and (lis[i] <= end):
c += 1
return c
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: