Алгоритмический вопрос дня — найти в двумерном массиве — python

алгоритм
Алгоритмический вопрос дня — найти в двумерном массиве — python

【Название Описание】

【Идея кода】Идея 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