0001の2次元配列を探します
タイトル説明
(同一の各一次元アレイの長さ)は、上から下に増加する順に、二次元アレイの各列をソートし、ソート昇順の順に左から右へ、各行。完全な機能は、そのような二次元アレイと整数を入力し、配列の整数が含まれているか否かが判断されます。
トピックスアドレス
- https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
レポートの問題解決
暴力行為
マイクロチャネル公共数によって、この問題の解決策
小猿刷题
が間違っを提供するには、私を修正してください。
配列を1つずつ、見つかった場合は復帰 true
/**
* 微信公众号"小猿刷题"
*/
public class Solution {
public boolean Find(int target, int [][] array) {
for(int i = 0; i < array.length; i ++){
for(int j = 0; j < array[i].length; j++){
if(target == array[i][j]){
return true;
}
}
}
return false;
}
}
ローカルバイナリ検索
マイクロチャネル公共数によって、この問題の解決策
小猿刷题
が間違っを提供するには、私を修正してください。
プログレッシブトラバーサル、各列内のバイナリ検索。
/**
* 微信公众号"小猿刷题"
*/
public class Solution {
public boolean Find(int target, int [][] array) {
for(int i = 0; i< array.length; i++){
int low = 0;
int high = array[i].length - 1;
while (low <= high){
int mid = (low + high) / 2;
if(target > array[i][mid]){
low = mid + 1;
} else if(target < array[i][mid]){
high = mid - 1;
} else {
return true;
}
}
}
return false;
}
}
全体のバイナリ検索
マイクロチャネル公共数によって、この問題の解決策
小猿刷题
が間違っを提供するには、私を修正してください。
上から下への二次元アレイは、規則性を増加させるの左から右へ、次いで上側を選択するか、要素の左隅低下array[row][col]
比較され、目標を。
- 場合
target
エレメント未満array[row][col]
それtarget
の要素でなければならないarray
、すなわち行の左側col--
。 - 場合
target
よりも素子大きいarray[row][col]
時間、次いでtarget
確実要素にarray
以下の列、すなわちrow++
、
/**
* 微信公众号"小猿刷题"
*/
public class Solution {
public boolean Find(int target, int [][] array) {
int row = 0;
int col = array[0].length - 1;
while (row <= array.length -1 && col >= 0) {
if(target > array[row][col]) {
row ++;
} else if(target < array[row][col]) {
col --;
} else {
return true;
}
}
return false;
}
}