剑指 Offer 04. 二维数组中的查找
对于这种右边永远大于左边下边永远大于上边的二维数组来说,右上角和左下角是特殊的
对于右上角前面的都小于他,下边的都大于他。
如果target>右上角那么这一行都可以排除,坐标直接下移
如果target<右上角那么这一列直接排除坐标左移。
代码:
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if(matrix.length==0) return false;
if(matrix[0].length==0)return false;
int x = matrix[0].length-1;
int y = 0;
while(true) {
if(matrix[y][x]==target) return true;
else if(matrix[y][x]<target) y++;
else if(matrix[y][x]>target) x--;
if(x<0||y>=matrix.length) return false;
}
}
}