数组及相关算法题

本文介绍数组以及和数组相关的一些算法题。

数组基本操作

  1. 寻找数组中重复的数字,数组长度为n,数字范围0~n-1。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def find_duplication(array):
if not array: return False
for i in range(len(array)):
if array[i]<0 or array[i]>=len(array):
return False

for i in range(len(array)):
# 循环,直到数组的值等于当前的indx
while array[i] != i:

if array[i] == array[array[i]]:
duplication = array[i]
return True, duplication

# 交换数组元素,注意顺序,先执行前面的,再执行后面的,反过来会出错。
array[array[i]], array[i] = array[i], array[array[i]]

return False
1
2
3
4
5
6
a = [4, 2, 3, 2, 1]
print(find_duplication(a))
a = []
print(find_duplication(a))
a = [4, 5, 3, 2, 1]
print(find_duplication(a))
(True, 2)
False
False