劍指offer-01:陣列查詢
阿新 • • 發佈:2018-12-05
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
時間限制:1秒
空間限制:32768K
程式碼:
/**
* 在一個二維陣列中(每個一維陣列的長度相同),
* 每一行都按照從左到右遞增的順序排序,
* 每一列都按照從上到下遞增的順序排序。
* 請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
*/
public class Solution01 {
public boolean find(int target, int[][] array) {
//共有多少行
int rowCount = array.length;
//共有多少列
int colCount = array[0].length;
int row = 0;
int line = colCount - 1;
//先從第一行最大值比較,
// 如果比目標值小就增行,
// 如果比目標值大就減列;
while (row < rowCount && line >= 0) {
if (array[row][line] == target)
return true;
else if (array[row][line] < target)
row++;
else
line--;
}
return false;
}
public static void main(String[] args) {
int[][] arr={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
System.out.print( new Solution01().find(5,arr));
}
}