【Название Описание】
【Идея кода】Идея 1. Выполните двоичный поиск по строке, пока первый элемент строки меньше целевого, выполните двоичный поиск в строке. Идея 2: Начать поиск с левого нижнего угла массива array[j][i], если текущее значение меньше целевого, перейти вправо, то есть i+1, если текущее значение больше чем цель, идут вверх, то есть j-1.【Исходный код】
思路1:时间复杂度0(nlogn)
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
if(len(array)==0 or len(array[0])==0):return False
for i in range(0,len(array)):
if(array[i][0]>target):
break
num=array[i]
left=0
right=len(num)-1
while left<=right:
mid=int((left+right)/2)
if(num[mid]>target):
right=mid-1
elif(num[mid]<target):
left=mid+1
else:
return True
return False
思路2:时间复杂度:O(n)
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array) - 1
cols= len(array[0]) - 1
i = rows
j = 0
while j<=cols and i>=0:
if target<array[i][j]:
i -= 1
elif target>array[i][j]:
j += 1
else:
return True
return False