我用了两种方法解: 第一种方法耍赖,遍历每一行数组,然后用list的in方法判断在不在里面。 第二种方法是先遍历最后一行,找到target大于前一个元素,小于后一个元素位置j,然后移到上一行,从j开始往后找,类似于上一步找到target大于前一个元素,小于后一个元素位置j',在往上一行,依次类推。
# -*- coding: utf-8 -*-
"""
Created on Fri Mar 25 19:59:09 2022
@author: Administrator
"""
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param target int整型
# @param array int整型二维数组
# @return bool布尔型
#
class Solution:
def Find1(self , target: int, array) -> bool:
# write code here
nrows = len(array); ncols = len(array[0])
if ncols == 0:
return False
tag=0
for i in range(nrows):
tmp_list = array[nrows-i-1]
for j in range(tag , ncols):
if tmp_list[j] == target:
return True
elif tmp_list[j]<target:
pass
else:
break
if j==0:
pass
else:
tag = j
return False
def Find(self , target: int, array) -> bool:
# write code here
nrows = len(array)
for i in range(nrows):
if target in array[i]:
return True
return False
array = [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
print(Solution().Find(7 , array))