検索のpythonは、2次元マトリックスを達成します

件名の説明:

m×nの行列、目標値の有無を判定するために効率的なアルゴリズムにより調製。この行列は、次の特徴があります。

昇順に左から各行の右側の整数。
最初の整数は、それぞれ整数前の行の最後の行よりも大きいです。

例1:                            

入力:                                                                                
マトリックス= [
  [2 ,. 5 ,. 6 ,. 9]、
  [13、14 ,. 17 ,. 19である]、
  [25、26れている、27、28]
]
ターゲット= 6。
出力:真

例2:

入力:
マトリックス= [
  [2 ,. 5 ,. 6 ,. 9]、
  [13、14 ,. 17 ,. 19である]、
  [25、26れている、27、28]
]
ターゲット= 15
出力:偽

問題の解決策のアイデア:MXN与えられたトピックは、2次元マトリックス、実際の行列であるので、我々はの形で、ネストされたリストとして理解することができ、中間値の中の第1分割、ターゲットを見つけるために、バイナリ思考方法を探します[0,0,0]、[0,0,0]、[0,0,0]ので、Mの値ので、nが明らかになり、二つのリストの長さであり、そうで以来ミッド値を決定することができます。以下を達成するためのPythonコード:

 クラスのソリューション(オブジェクト):

    デフsearchMatrix(セルフ、マトリックス、ターゲット):

        「」」

        :型マトリックス:リスト[一覧[INT]]

        :型ターゲット:int型

        :RTYPE:BOOL

        「」」

        マトリックス==なしまたはlenの(マトリックス)== 0の場合:#行列は最初、空かどうかが決定されていません

            リターン偽

        行= lenの(マトリックス)

        COL = LEN(行列[0])

        スタート= 0

        端=行* COL - 1

        スタートながら、<=エンド:

            半ば= +開始(終了-開始 )/ 2# (+終了を開始し)ない理由ミッドとして/ 2は、参照することがこのブログを

            [ミッド/ COL] [ミッド%のCOL] ==ターゲットマトリックスの場合:

                trueを返します

            行列の場合[ミッド/ COL] [ミッド%COL]>ターゲット:

                終了=中旬 - 1

            そうしないと:

                開始=ミッド+ 1

        リターン偽

 

 

リリース元の4件の記事 ウォンの賞賛1 ビュー3525

おすすめ

転載: blog.csdn.net/u012853038/article/details/103963525