塞进裤子ヾ(≧O≦)〃嗷~

0%

二维数组的查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def Find(target, array):
#从左角元素开始,target比当前元素小,向上找;比当前元素大,向右找。
rowNum = len(array) #行数
columnNum = len(array[0])
if rowNum==0 or columnNum==0:
return False
i = rowNum-1
j = 0
while i>=0 and j < columnNum:
if target == array[i][j]:
return True
elif target > array[i][j]:
j += 1
else:
i -= 1

return False

旧版本

第一个版本 运行时间:440ms 占用内存:6128k
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def Find(target, array):
#从左上角元素开始,有两种情况。
#对每一行,比较行尾元素,确定在哪一行,再按列找
rowNum = len(array)
columnNum = len(array[0])
i = 0
for i in range(rowNum):
if target > array[i][columnNum-1]:
continue
elif target == array[i][columnNum-1]:
return True
else:
for j in range(columnNum):
if target == array[i][j]:
return True

# 比较每一行的行首,确定在哪一行,再按列找
for k in range(i, rowNum):
if target > array[i][0]:
continue
elif target == array[i][0]:
return True
else:
for j in range(columnNum):
if target == array[i][j]:
return True
return False
if help:小手一抖点个广告 or 大手一挥资助一下