思路:
指针从左下角出发。左下角为最后一行最小值处,和第一列最大值处。当指针位置元素大于target时,则说明该行最小值都大于target,target一定不在该行内,将指针上移一格。当指针位置元素小于target时,则说明该列的最大值都小于target,target一定不在该列内,将指针右移一格。指针每次移动,都将target的可能存在的范围缩小一行或者一列,而指针所指的位置始终位于target的可能存在的范围的左下角。最终当指针对应的位置元素值等于target时,说明找到了。当最后指针指向矩阵的外部时,说明没有找到。
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int i = matrix.length-1;
int j = 0;
while(i>=0&&i<matrix.length&&j>=0&&j<matrix[0].length)
{
if(matrix[i][j]==target)
return true;
if(matrix[i][j]>target)
{
i--;
continue;
}
if(matrix[i][j]<target)
{
j++;
continue;
}
}
return false;
}
}