タイトル説明
二次元アレイ(各一次元配列の長さと同じ)で、
各行は左から右にインクリメントされる
、順ソートに
インクリメンタルに従い、上から下に各列
のソート順。
完全な機能、例えば、二次元アレイと整数を入力し、配列の整数が含まれているか否かが判断されます。
問題解決のためのアイデア
必要とされる時間の複雑性O(M + N)、空間的複雑度はO(1)です。Mは、行の数であり、Nは列の数です。
二次元アレイの数は、それが残されている一定数未満である、それらの下側の特定の数よりも大きいです。
したがって、右上から探し始める、あなたが目標と現在の要素、左下隅のすべての要素の現在の検索間隔の要素との大小関係に応じて範囲を絞り込むことができます。
検索公共ブール{(ターゲットint型を、[] []配列をint型)
//空の判断が最初である IF(配列== nullの || 0 ||ことArray.lengthと==配列[0] .LENGTH == 0 ) { リターン falseに; }
//は、行と列の数を取得 int型配列[0 = COLS、Array.lengthとすることが=行を】.LENGTH;
//インデックス変数が定義されて INT R&LT = 0、= C-COLS 1 ;
//左下に右上から角度が回転見つける しばらく(R&LT <= &&列1-C> = 0 ){
//ターゲットデジタルを見つける IF(ターゲットが== 配列[R&LT] [C]){ リターン trueに; }
//現在の数は、ターゲットデジタル未満である IF(目標< 配列[R&LT] [C]){ C - ; } 他{//数が現在の目標デジタルよりも大きい R&LT ++ ; } }
//は、2次元アレイまで完全見つけます私たちは、目標数を見つけることができませんでした。 返す falseに; }