劍指Offer 第3題 二維陣列中的查詢 java

2021-09-01 15:26:33 字數 1347 閱讀 9655

3.在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

思路:從右上角或左下角開始找,逐行刪除,或者用二分法查詢

**

public class offer03 

int row = 0;

int column = arrays[0].length-1;

while(row=0)else if(arrays[row][column]>target)else

} return false; }

public static void main(string args) ,,,};

offer03 of03 = new offer03();

//測試用例

//1,二維陣列中包含查詢的數字(查詢的陣列是陣列中的最大值和最小值,查詢的數字介於陣列中的最大值和最小值之間)

int target1 = 15;

int target2 = 1;

int target3 = 7;

system.out.println(of03.find(arrays, target1));

system.out.println(of03.find(arrays, target2));

system.out.println(of03.find(arrays, target3));

//2,二維陣列中沒有查詢的數字(查詢的數字大於陣列中的最大值,查詢的數字小於陣列中的最小值,

//查詢的數字在陣列的最大值和最小值之間但是陣列中沒有這個數字)

int target4 = 16;

int target5 = 0;

int target6 = 3;

system.out.println(of03.find(arrays, target4));

system.out.println(of03.find(arrays, target5));

system.out.println(of03.find(arrays, target6));

//3,特殊輸入測試(輸入空指標)

int target7 = 7;

int arrays_2 = null;

system.out.println(of03.find(arrays_2, target7));

}}

執行結果

《劍指offer》二維陣列題

本文完全自己學習記錄,以便將來回顧 未排版 思路 從最後一列的首行開始與number比較 比如上圖中的數字9 若大於該number,則此列可跳過,繼續比較前面一列首行數字,若大於number繼續上一步,若小於,則看此列下一行數字,若找到則true,若此列遇到大於number的數字,還未找到numbe...

劍指offer 二維陣列

題目 在乙個二維陣列中每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。完成乙個函式,輸入這樣的陣列和乙個整數,判斷陣列中是否含有該整數。思路 由於該二維陣列從左到右,從上到下均為順序遞增的。因此右下角與左上角的數字均大於或小於其周圍數字,如果選擇改組作為起始點,則無法確定下一...

劍指offer 二維陣列中查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和一 個整數,判斷陣列中是否含有該整數。public class solution 因為陣列每一行都按照從左到右遞增的順序排序,每一列都按照從上到下...