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 因為陣列每一行都按照從左到右遞增的順序排序,每一列都按照從上到下...