题目
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
思路
两个任务:
1.判断有没有target
2.判断矩阵是否符合条件
通过一个二重循环实现。用1个prio变量记录每一行中前一个变量的值,进行比较,切换行时修改值为当前行的第一个值。
代码
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int flag = 0;
for(int i = 0; i < matrix.length;i++){
int prio = matrix[i][0];
for(int j=0; j<matrix[0].length;j++){
if(j >0 && matrix[i][j] < prio ){
return false;
}
if(target == matrix[i][j]){
flag = 1;
}
prio = matrix[i][j];
}
}
if(flag == 1){
return true;
}else{
return false;
}
}
}