バックル力は007を行使--- 2次元マトリクス2(240)を検索します

件名の説明:

https://leetcode-cn.com/problems/search-a-2d-matrix-ii/submissions/

 

目標行列対象のM×nの行列を検索するために効率的なアルゴリズムにより調製。この行列は、次の特徴があります。

昇順の各行の要素は左から右へ。
昇順に上から下に、各列の要素。
例:

次のように既存の行列が掛け:

[
[1、4、7、11、15]、
[2、5、8、12、19]、
[3、6、9、16、22]、
[10、13、14、17、24]、
[ 18、21、23、26、30]
]
所与のターゲット= 5、戻り真。

与えられたターゲット= 20は、falseを返します。

トピック分析:

1、タイトルを初めて目には、私は、なぜまたは中難易度それを得るために2つのサイクルに直接この質問を感じますか?暴力的な解決策によると、提出後に彼らはありませんが、非常に長い時間を持つことができます。

2、暴力の時間のかかるソリューションの原因は次のとおりです。プログラムは、探索空間のすべてを取ります。

3、最近のイデオロギー分割統治でちょうど見て、分割統治の記述はおそらく考えている:シンプルなサブ問題に複雑な問題を分割し、次いで溶液の問題児の最終的なソリューションに統合。

図4に示すように、タイトル行と列がそうヘッドバイナリサーチの飛び出し、昇順である、二分探索法は、分割統治のアイデアを使用することです。

図5に示すように、二分探索方法について昇順構造線形、ターゲットを検索し、ターゲットは第一の中間値であってもよいが、直鎖構造を比較し、見つかった目標値を表す中間値に等しく、それは中間値を超えた場合、ターゲットラインできます半分の構造の後、

     中間値よりも小さい、ターゲット構造ラインの半分であってもよく、前のステップを繰り返して、あなたは最終的に最終的な結果を得るでしょう、そして、約50%の探索空間占有率;

行と列が昇順であるため、二分法を使用して、この問題は、最適な点がある場合6、は、二分法の行または列に小さい幅を使用することが可能です。

Javaコード&バックル力の業績---暴力行為:

    パブリック ブール searchMatrix1(INT [] []行列、INT ターゲット){
         場合(matrix.length == 0 ){
             戻り 
        } 
        INT colSize =行列[0 ] .LENGTH。
        INT [] int値:行列){
             ためINT J = 0; J <colSize; J ++ ){
                 場合(int値[J] == ターゲット){
                     戻り 
                } 
            } 
        } 
        リターン ; 
    }

Javaコード&バックル力の業績 ---二分法:

    パブリック ブール searchMatrix2(INT [] []行列、INT ターゲット){
         場合(matrix.length == 0 ){
             戻り 
        } 
        のためのINT [] int値:行列){
             ブール結果= binarySearch(0、ints.length - 1 、int値、ターゲット)
            もし(結果){
                 戻り 
            } 
        } 
        を返す 
    } 

    プライベート ブール binarySearch(int型開始、INTの端、INT [] NUMS、int型のターゲット){
         場合(<=開始端){
             int型中間=(+端を開始)>> 1 もし(NUMS [中間] == ターゲット){
                 戻り 
            } そう であれば(NUMS [中間]> ターゲット){
                 リターン binarySearch(中央、開始- 1 、NUMS、ターゲット)
            } {
                 リターン binarySearch(1 +真ん中、終わり、NUMS、ターゲット)
            } 
        }
        リターン はfalse ; 
    }

 

Javaコード&バックル力の業績 ---最適化の二分法:

おすすめ

転載: www.cnblogs.com/sniffs/p/12510288.html