【LeetCode] 74 2Dマトリックスを検索します

2次元行列を検索します。質問の意味は、あなたが2次元配列にターゲットを見つけることができるかどうかを尋ね、2次元アレイとターゲットを与えることです。

アイデアは、一次元配列に変換し、二分法に関係する入力です。その後、オーバー変換するため、この問題は、入力が命じた一次元配列であるので、あなたは二分法で行うことができます。例、

例1:

入力:
マトリックス= [
  [1、3、5、7]
  [10、11、16、20]、
  [23、30、34、50]
]
ターゲット= 3
出力:真

例2:

入力:
マトリックス= [
  [1、3、5、7]
  [10、11、16、20]、
  [23、30、34、50]
]
目標= 13
出力:偽

時間O(MNログ)、m及びnは、行列の長さと幅であります

スペースO(1)

1  / * *
 2  * @param {数[] []}マトリックス
 3  * @param {数}ターゲット
 4は、 * @return {ブール}
 5   * / 
6  のvar searchMatrix = 関数(行列、ターゲット){
 7      // コーナーケース
8      もし(マトリックス=== ヌル || matrix.length === 0 ){
 9          リターン 10      }
 11  
12      // 通常の場合
13      LET行= matrix.length。
14      LET COL =行列[0 ] .LENGTH。
15は      = 0を始めましょう16      LET端=行* COL - 1 17      一方(開始<= 端){
 18          LETミッド= Math.floor(+(エンド開始-開始)/ 2 )。
19          LET値=行列[Math.floor(MID / COL)] [Math.floor(MID%のCOL)]。
20          であれば(値=== ターゲット){
 21              リターン 22          } そう であれば(値< 目標){
 23              START =ミッド+ 1 24          } {
 25             終了=半ば- 1 26          }
 27      }
 28      リターン 29 }。

 

おすすめ

転載: www.cnblogs.com/aaronliu1991/p/11796039.html