題目:
面試題04. 二維數組中的查找
思路:
- 二維數組是有序的數組,從左向右遞增,從上到下遞增,所以只要比較每一行的最後一個數字,只要最後一個數字比當前數字小,那麼直接跳過(剪枝)這一行;若某一行的最後一個數字恰好是要找的target,那麼直接返回true;若最後一個數字比當前數字大,接着就看這一行的第一個數字,若第一個數字小於target,就說明要找的數字可能在這一行中,那麼就對這一行進行遍歷比較。
實現:
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length ==0 || matrix[0].length == 0) return false;
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; i++) {
if (target == matrix[i][col - 1] || target == matrix[i][0]) return true;
if (target < matrix[i][col - 1] && target > matrix[i][0]) {
for (int j = col - 2; j > 0; j--) {
if (target == matrix[i][j])
return true;
}
}
}
return false;
}
}