双指针法

根据每行从左到右,每列从上到下的规律,从右上角开始:

  • 当前元素=目标元素,查找结束
  • 当前元素<目标元素,目标元素位于下侧,行+1
  • 当前元素>目标元素,目标元素位于左侧,列-1
class Solution:
    def Find(self , target: int, array: List[List[int]]) -> bool:
        # 右上角坐标
        col = len(array[0]) - 1
        row = 0
        while col >= 0 and row < len(array):
            # 判断结果
            if array[row][col] == target:
                return True
            # 目标值大于当前元素,下移
            elif array[row][col] < target:
                row +=  1
            # 小于目标值,左移
            else:
                col -= 1
        return False