1.在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。
請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否有該整數。
(1)如何判斷
已知數組從左到右遞增,從上到下遞增。故選取右上角的整數與目標整數進行比較,若大於則刪除列,小於刪除行,一致則返回。
(2)如何確定右上角整數位置
一個二維數組 行數 rows = array.length
列數 cols = array[1].length
右上角位置是第一行最後一列,所以row = 0;col = cols-1
(3)刪除行、列,繼續鎖定右上角位置直至結束
刪除行 row++
刪除列 col--
public class test1{
public static boolean find(int[][] array, int n) {
if (array == null || array.length < 1 || array[0].length < 1) {
return false;
}
int rows = array.length;
int cols = array[1].length;
int row = 0;
int col = cols - 1;
while (row >= 0 && row < rows && col >= 0 && col < cols) {
if (array[row][col] == n) {
return true;
}
else if (array[row][col] > n)
col--;
else
row++;
}
return false;
}
public static void main(String[] args) {
int[][] array = {{1, 2, 3, 4},{5,6,7,8}};
System.out.println(find(array, 2));
}
}
結果輸出 true