Python 強制ボタンのブラッシングの質問 - 剣はオファー 04 を指します。二次元配列で検索

Jianzhi Offer 04. 二次元配列での検索
n * m の二次元配列では、各行は左から右に昇順にソートされ、各列は上から下に昇順にソートされます。このような二次元配列と整数を入力し、配列に整数が含まれているかどうかを判定する効率的な関数を完成させてください。
ここに画像の説明を挿入

方法:
二分法と同様に、右上隅から検索を開始します。それより小さい場合は現在の列を削除し、それより大きい場合は現在の行を削除し、何度も範囲を絞り込みます。もちろん、左下隅から開始してその逆を行うこともできます。

class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool: 
        if len(matrix) == 0:
            return False     
        raw = 0
        row = len(matrix[0]) - 1
        while (row >= 0 and raw < len(matrix)):
            if target == matrix[raw][row]:
                return True
            elif target > matrix[raw][row]:
                raw += 1
            else:
                row -= 1
        return False

おすすめ

転載: blog.csdn.net/weixin_45455015/article/details/118347468