题解 | #二维数组中的查找#
二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
#方法一,20/21 组用例通过
#从对角线寻找对应行的方法,存在盲区,不正确
# class Solution:
# def Find(self , target: int, array: List[List[int]]) -> bool:
# # write code here
# rows = len(array)
# cols = len(array[0])
# if array==[[]] :
# return False
# i=0
# j=0
#从对角线寻找对应行的方法,存在盲区,不正确
# while target>array[i][j] and i<rows-1 and j<cols-1 :
# i=i+1
# j=j+1
# while target<array[i][j] and j>0:
# j=j-1
# if array[i][j]==target:
# return True
# return False
#方法二 线性搜索
#class Solution:
# def Find(self, target, array):
# if len(array) == 0:
# return False
# rows = len(array)
# cols = len(array[0])
# #从左下开始,
# left, down = 0, rows-1
# while left <cols and down>=0:
# tmp = array[down][left]
# if tmp == target:
# return True
# elif tmp <target:
# left +=1
# else:
# down-=1
# return False
#方法三 二分搜索
class Solution:
def bisearch(self ,target,array):
left=0
right=len(array)-1
while left<=right:
mid=int((right+left)/2)
if target==array[mid]:
return True
elif target>array[mid]:
left = mid+1
elif target<array[mid]:
right=mid-1
return False
def Find(self , target: int, array: List[List[int]]) -> bool:
# write code here
rows = len(array)
for i in range(rows):
arr=array[i]
result=self.bisearch(target,arr)
if result==True:
return True
return False

