題目:
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
基本思想:
首先選取數組中右上角的數字。如果等於要找的數字,結束。如果大於要找的數字,剔除這個數字所在的列;如果小於要找的數字,剔除這個數字所在的行。
public static boolean find(int[][] array, int number) {
if (array == null || array.length == 0)
return false;
int column = array[0].length;
int row = array.length;
int i = 0, j = column - 1;
while (i < row && j > 0) {
if (array[i][j] == number) {
return true;
} else if (array[i][j] > number) {
j--;
continue;
} else if (array[i][j] < number) {
i++;
continue;
}
}
return false;
}