題目描述
在一個二維數(shù)組中,每一行都按照從左到右遞增的順序遞增,每一列都按照從上到下的順序遞增褐筛。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù)叙身,判斷數(shù)組是否含有該整數(shù)渔扎。
解題思路
- 假設(shè)查找的數(shù)字為A。
- 從二維數(shù)組右上角數(shù)字開始比較曲梗,如果A小于該數(shù)字赞警,由于每一列是從上到下遞增的,則這一列排除虏两。
- 如果A大于該數(shù)字愧旦,由于每一行都按照從左到右遞增的順序排序,則排除這一行定罢。
- 如此反復(fù)縮小范圍即可笤虫。
代碼
boolean find(int[][] matrix, int number){
if (matrix == null) {
return false;
}
int row = 0; // 行
int column = matrix[0].length - 1; // 列
while (column >= 0 && row < matrix.length ) {
if (matrix[row][column] == number) {
return true;
} else if (number < matrix[row][column]) {
column --;
} else {
row++;
}
}
return false;
}