题目
首先确定target在哪一行,也就是比较每一行的最后一个位置。
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix.length==0 || matrix[0].length==0) return false;
int row = matrix.length;
int col = matrix[0].length;
if(target>matrix[row-1][col-1] || target<matrix[0][0]) return false;
int i=0;
while(i<row){
if(target<=matrix[i][col-1]) break;
i++;
}
for(int j=0;j<col;j++){
if(matrix[i][j]==target) return true;
}
return false;
}
}
几个月之后,再重新做这道题,自己写的代码确实有点丑陋
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix.length == 0 || matrix[0].length==0) return false;
int index = 0;
for(int i = 0; i < matrix.length; i++){
if(target == matrix[i][0]){
return true;
}else if(target < matrix[i][0]){
index = i-1;
break;
}else{
index = i;
}
}
if(index == -1) return false;
for(int j = 0; j < matrix[0].length; j++){
if(target == matrix[index][j]) return true;
}
return false;
}
}